name: Build and Test jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] name: Dotnet build steps: - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Setup dotnet uses: actions/setup-dotnet@v5 with: dotnet-version: | 8.0.x 9.0.x - name: Build run: dotnet build --configuration Release - name: Test run: dotnet test --configuration Release --collect:"Code Coverage;Format=Cobertura" --logger trx --results-directory TestResults --settings CodeCoverage.runsettings --no-build - name: Upload coverage to Codecov uses: codecov/codecov-action@v5 with: directory: ./TestResults files: '*.cobertura.xml' - name: Upload test results uses: actions/upload-artifact@v5 with: name: test-results-${{ matrix.os }} path: ./TestResults if: ${{ always() }} # Always run this step even on failure # Test code gen for visual studio compatibility >> https://github.com/kubernetes-client/csharp/pull/1008 codgen: runs-on: windows-latest name: MSBuild build steps: - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v2 - name: Setup dotnet SDK uses: actions/setup-dotnet@v5 with: dotnet-version: '9.0.x' - name: Restore nugets (msbuild) run: msbuild .\src\KubernetesClient\ -t:restore -p:RestorePackagesConfig=true - name: Build (msbuild) run: msbuild .\src\KubernetesClient\ e2e: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Setup dotnet uses: actions/setup-dotnet@v5 with: dotnet-version: | 8.0.x 9.0.x - name: Minikube run: minikube start - name: Test run: | true > skip.log env K8S_E2E_MINIKUBE=1 dotnet test tests/E2E.Tests --logger "SkipTestLogger;file=$PWD/skip.log" -p:BuildInParallel=false if [ -s skip.log ]; then cat skip.log echo "CASES MUST NOT BE SKIPPED" exit 1 fi - name: AOT Test run: | true > skip.log env K8S_E2E_MINIKUBE=1 dotnet test tests/E2E.Aot.Tests --logger "SkipTestLogger;file=$PWD/skip.log" -p:BuildInParallel=false if [ -s skip.log ]; then cat skip.log echo "CASES MUST NOT BE SKIPPED" exit 1 fi on: pull_request: types: [assigned, opened, synchronize, reopened]