Skip to content

Commit 08654af

Browse files
authored
Merge pull request #9153 from BitGo/HSM-436-block-release-when-rel-ahead
ci(root): block release when rel/latest is ahead of master
2 parents 98c98f3 + 650b70f commit 08654af

1 file changed

Lines changed: 31 additions & 1 deletion

File tree

.github/workflows/npmjs-release.yml

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,35 @@ env:
4343
DOCKER_HUB_USERNAME: "bgdeploybot"
4444

4545
jobs:
46+
verify-back-merge:
47+
name: Verify previous back-merge landed
48+
# Each release bumps versions on rel/latest; a back-merge PR (rel/latest ->
49+
# master) returns them. If that PR is missed, rel/latest stays ahead and the
50+
# next release would publish on top of an out-of-sync rel/latest. Block the
51+
# release until the previous back-merge has landed.
52+
# Skipped in recovery mode, where rel/latest is intentionally ahead.
53+
if: ${{ !inputs.recovery-mode }}
54+
runs-on: ${{ vars.BASE_RUNNER_TYPE || 'ubuntu-latest' }}
55+
timeout-minutes: 10
56+
steps:
57+
- name: Checkout repository
58+
uses: actions/checkout@v6
59+
with:
60+
ref: master
61+
fetch-depth: 0
62+
63+
- name: Ensure rel/latest is not ahead of master
64+
run: |
65+
git fetch --no-tags origin +refs/heads/rel/latest:refs/remotes/origin/rel/latest
66+
if git merge-base --is-ancestor origin/rel/latest origin/master; then
67+
echo "✅ rel/latest is not ahead of master — previous back-merge has landed."
68+
exit 0
69+
fi
70+
echo "::error::rel/latest is ahead of master. The back-merge PR (rel/latest -> master) from the previous release has not landed. Merge it before releasing."
71+
echo "Commits on rel/latest not yet in master:"
72+
git log --oneline origin/master..origin/rel/latest
73+
exit 1
74+
4675
get-release-context:
4776
name: Get release context
4877
if: ${{ !inputs.recovery-mode }}
@@ -182,7 +211,8 @@ jobs:
182211
needs:
183212
- get-release-context
184213
- get-recovery-context
185-
if: ${{ always() && needs.get-release-context.result != 'failure' && needs.get-recovery-context.result != 'failure' }}
214+
- verify-back-merge
215+
if: ${{ always() && needs.get-release-context.result != 'failure' && needs.get-recovery-context.result != 'failure' && needs.verify-back-merge.result != 'failure' }}
186216
runs-on: ${{ vars.BASE_RUNNER_TYPE || 'ubuntu-latest' }}
187217
timeout-minutes: 60
188218
environment: npmjs-release

0 commit comments

Comments
 (0)