From d208ede4f24335ae6faef1c93a9d2f0758d7946f Mon Sep 17 00:00:00 2001 From: Ben Limpich Date: Mon, 22 Jun 2026 12:19:24 -0700 Subject: [PATCH 1/2] Treat existing release as success in deploy create-release retry loop --- .github/workflows/deploy.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8c42102952d4..15459a6463f3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -916,6 +916,12 @@ jobs: --target "${{ env.DEPLOY_ENV }}"; then break fi + + # A transient 502 can create the release server-side, so a later "already exists" error means the release we wanted is present. + if gh release view "${{ needs.prep.outputs.TAG }}" --repo "${{ github.repository }}" &> /dev/null; then + echo "Release ${{ needs.prep.outputs.TAG }} exists despite a create error (likely a transient 502), treating as success." + break + fi if [[ $i -lt $CREATE_MAX_RETRIES ]]; then echo "Failed to create release. Retrying in 3 seconds... ($((CREATE_MAX_RETRIES - i)) attempts left)" sleep 3 From 37f695794a14708f57ddfffffb054f6c7f4f5fdd Mon Sep 17 00:00:00 2001 From: Ben Limpich Date: Thu, 25 Jun 2026 14:54:18 -0700 Subject: [PATCH 2/2] Clarify create-release retry comment per review feedback --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 15459a6463f3..9a9d6f2132be 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -917,7 +917,7 @@ jobs: break fi - # A transient 502 can create the release server-side, so a later "already exists" error means the release we wanted is present. + # A transient GitHub error during create doesn't necessarily mean the release failed; it may have been created anyway, so a later "already exists" error means it's present. if gh release view "${{ needs.prep.outputs.TAG }}" --repo "${{ github.repository }}" &> /dev/null; then echo "Release ${{ needs.prep.outputs.TAG }} exists despite a create error (likely a transient 502), treating as success." break