From d0e779cf03f2031afd4ab5ad8d617d90b6b18931 Mon Sep 17 00:00:00 2001 From: Tyrie Vella Date: Fri, 22 May 2026 14:47:03 -0700 Subject: [PATCH] ci: add retry for artifact download steps Transient failures in actions/download-artifact are a frequent source of flaky CI runs. Add a retry step after each download that triggers only when the first attempt fails (continue-on-error + outcome check). Applied to both functional-tests.yaml and upgrade-tests.yaml. Assisted-by: Claude Opus 4.6 Signed-off-by: Tyrie Vella --- .github/workflows/functional-tests.yaml | 36 +++++++++++++++++++++++++ .github/workflows/upgrade-tests.yaml | 18 +++++++++++++ 2 files changed, 54 insertions(+) diff --git a/.github/workflows/functional-tests.yaml b/.github/workflows/functional-tests.yaml index 72c9ee503..046003d9f 100644 --- a/.github/workflows/functional-tests.yaml +++ b/.github/workflows/functional-tests.yaml @@ -77,7 +77,19 @@ jobs: return true - name: Download Git installer + id: download-git if: steps.skip.outputs.result != 'true' + continue-on-error: true + uses: actions/download-artifact@v8 + with: + name: ${{ inputs.git_artifact_name }} + path: git + repository: ${{ inputs.git_repository || github.repository }} + run-id: ${{ inputs.git_run_id || github.run_id }} + github-token: ${{ secrets.git_token || github.token }} + + - name: Download Git installer (retry) + if: steps.skip.outputs.result != 'true' && steps.download-git.outcome == 'failure' uses: actions/download-artifact@v8 with: name: ${{ inputs.git_artifact_name }} @@ -87,7 +99,19 @@ jobs: github-token: ${{ secrets.git_token || github.token }} - name: Download GVFS installer + id: download-gvfs if: steps.skip.outputs.result != 'true' + continue-on-error: true + uses: actions/download-artifact@v8 + with: + name: GVFS_${{ matrix.configuration }} + path: gvfs + repository: ${{ inputs.vfs_repository || github.repository }} + run-id: ${{ inputs.vfs_run_id || github.run_id }} + github-token: ${{ secrets.vfs_token || github.token }} + + - name: Download GVFS installer (retry) + if: steps.skip.outputs.result != 'true' && steps.download-gvfs.outcome == 'failure' uses: actions/download-artifact@v8 with: name: GVFS_${{ matrix.configuration }} @@ -97,7 +121,19 @@ jobs: github-token: ${{ secrets.vfs_token || github.token }} - name: Download functional tests drop + id: download-ft if: steps.skip.outputs.result != 'true' + continue-on-error: true + uses: actions/download-artifact@v8 + with: + name: FunctionalTests_${{ matrix.configuration }} + path: ft + repository: ${{ inputs.vfs_repository || github.repository }} + run-id: ${{ inputs.vfs_run_id || github.run_id }} + github-token: ${{ secrets.vfs_token || github.token }} + + - name: Download functional tests drop (retry) + if: steps.skip.outputs.result != 'true' && steps.download-ft.outcome == 'failure' uses: actions/download-artifact@v8 with: name: FunctionalTests_${{ matrix.configuration }} diff --git a/.github/workflows/upgrade-tests.yaml b/.github/workflows/upgrade-tests.yaml index a398d6666..e3b124b0a 100644 --- a/.github/workflows/upgrade-tests.yaml +++ b/.github/workflows/upgrade-tests.yaml @@ -63,14 +63,32 @@ jobs: gh release download $tag --repo microsoft/VFSForGit --pattern "SetupGVFS*.exe" --dir gvfs-lkg - name: Download Git installer + id: download-git if: steps.skip.outputs.result != 'true' + continue-on-error: true + uses: actions/download-artifact@v8 + with: + name: MicrosoftGit + path: git + + - name: Download Git installer (retry) + if: steps.skip.outputs.result != 'true' && steps.download-git.outcome == 'failure' uses: actions/download-artifact@v8 with: name: MicrosoftGit path: git - name: Download current GVFS installer + id: download-gvfs if: steps.skip.outputs.result != 'true' + continue-on-error: true + uses: actions/download-artifact@v8 + with: + name: GVFS_${{ matrix.configuration }} + path: gvfs-new + + - name: Download current GVFS installer (retry) + if: steps.skip.outputs.result != 'true' && steps.download-gvfs.outcome == 'failure' uses: actions/download-artifact@v8 with: name: GVFS_${{ matrix.configuration }}