feat: retry policies with exponential backoff and exception filtering #15681
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: .NET | |
| on: | |
| pull_request: | |
| branches: ["main"] | |
| workflow_dispatch: | |
| inputs: | |
| categories: | |
| description: Categories to run | |
| type: string | |
| required: false | |
| publish-packages: | |
| description: Publish packages? | |
| type: boolean | |
| required: true | |
| jobs: | |
| modularpipeline: | |
| environment: ${{ github.ref == 'refs/heads/main' && 'Production' || 'Pull Requests' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| fail-fast: false | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Free Disk Space (Ubuntu) | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: jlumbroso/free-disk-space@main | |
| with: | |
| tool-cache: false | |
| android: true | |
| dotnet: true | |
| haskell: true | |
| large-packages: false | |
| docker-images: false | |
| swap-storage: false | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check for .received.txt files | |
| shell: bash | |
| run: | | |
| if find . -name "*.received.txt" -not -path "./node_modules/*" | grep -q .; then | |
| echo "ERROR: .received.txt files found. These should not be committed." | |
| echo "Please replace them with .verified.txt files or remove them." | |
| find . -name "*.received.txt" -not -path "./node_modules/*" | |
| exit 1 | |
| fi | |
| - name: Setup .NET Framework | |
| if: matrix.os == 'windows-latest' | |
| uses: microsoft/setup-msbuild@v2 | |
| - name: Setup .NET 6 | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: 6.0.x | |
| - name: Setup .NET 8 | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: 8.0.x | |
| - name: Setup .NET 9 | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: 9.0.x | |
| - name: Setup .NET 10 | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: 10.0.x | |
| - name: Cache NuGet packages | |
| uses: actions/cache@v5 | |
| continue-on-error: true | |
| with: | |
| path: | | |
| ~/.nuget/packages | |
| ~/.local/share/NuGet | |
| %LocalAppData%\NuGet\v3-cache | |
| key: nuget-${{ runner.os }}-${{ hashFiles('**/Directory.Packages.props', '**/*.csproj') }} | |
| restore-keys: | | |
| nuget-${{ runner.os }}- | |
| - name: Docker Setup Docker | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: docker/setup-docker-action@v4.7.0 | |
| - name: Cache Playwright Browsers | |
| uses: actions/cache@v5 | |
| continue-on-error: true | |
| id: playwright-cache | |
| with: | |
| path: | | |
| ~/.cache/ms-playwright | |
| ~/Library/Caches/ms-playwright | |
| ~/AppData/Local/ms-playwright | |
| key: playwright-${{ runner.os }}-${{ hashFiles('**/package-lock.json', '**/package.json', '**/Directory.Packages.props') }} | |
| restore-keys: | | |
| playwright-${{ runner.os }}- | |
| - name: Install Playwright | |
| run: npx playwright install --with-deps | |
| if: steps.playwright-cache.outputs.cache-hit != 'true' | |
| - name: Install Playwright (browsers only) | |
| run: npx playwright install | |
| if: steps.playwright-cache.outputs.cache-hit == 'true' | |
| - name: Enable Long Paths on Windows | |
| if: matrix.os == 'windows-latest' | |
| run: | | |
| New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force | |
| shell: pwsh | |
| - name: Build | |
| run: dotnet build -c Release | |
| - name: Publish AOT | |
| run: dotnet publish TUnit.TestProject/TUnit.TestProject.csproj -c Release --use-current-runtime -p:Aot=true -o TESTPROJECT_AOT --framework net10.0 | |
| - name: Run Pipeline | |
| uses: ./.github/actions/execute-pipeline | |
| with: | |
| admin-token: ${{ secrets.ADMIN_TOKEN }} | |
| environment: ${{ github.ref == 'refs/heads/main' && 'Production' || 'Development' }} | |
| nuget-apikey: ${{ secrets.NUGET__APIKEY }} | |
| publish-packages: ${{ (github.event.inputs.publish-packages || false) && matrix.os == 'ubuntu-latest' }} | |
| - name: Upload Diagnostic Logs | |
| uses: actions/upload-artifact@v6.0.0 | |
| if: always() | |
| with: | |
| name: TestingPlatformDiagnosticLogs${{matrix.os}} | |
| path: '**/log_*.diag' | |
| - name: Upload Hang Dumps | |
| uses: actions/upload-artifact@v6.0.0 | |
| if: always() | |
| with: | |
| name: HangDump${{matrix.os}} | |
| path: '**/hangdump*' | |
| - name: NuGet Packages Artifacts | |
| uses: actions/upload-artifact@v6.0.0 | |
| if: always() | |
| with: | |
| name: 'NuGetPackages-${{matrix.os}}' | |
| path: '**/*.*nupkg' |