fix(release): default to moving latest tag; require typed phrase to skip#36311
Conversation
Replace the update_latest boolean checkbox with a free-text skip_latest field. latest now advances on every GA release from main by default; skipping requires typing the exact phrase "DO NOT UPDATE LATEST". Any other value (blank, typo) still moves latest — fail-safe to the default. Reliability of the default pull tag no longer depends on an operator remembering not to uncheck a box (which silently stalled latest on 26.06.22-02). Back-patches need no opt-out: the evergreen-tracks engine is forward-only, so promote --tracks latest on an older release is a no-op. Runtime freeze remains available via the admin `hold latest`. Closes: #36310 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oEATTqepwGVAMXPJpSqoy
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Claude finished @sfreudenthaler's task in 53s —— View job Rollback Safety Analysis
Result: ✅ Safe To RollbackThe diff is exclusively a GitHub Actions workflow change ( Checklist against all categories:
The change replaces a Label added: |
🤖 Bedrock Review —
|
…pdating Add a verify-branch validation step that fails the release when skip_latest is neither blank nor exactly "DO NOT UPDATE LATEST". A near-miss like "do not update latest" now errors and forces a deliberate re-run, rather than silently falling through to updating latest. Input passed via env to avoid expression injection. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oEATTqepwGVAMXPJpSqoy
|
Updated per review: a near-miss in Added a - name: Validate skip_latest input
env:
SKIP_LATEST: ${{ github.event.inputs.skip_latest }}
run: |
if [ -n "${SKIP_LATEST}" ] && [ "${SKIP_LATEST}" != "DO NOT UPDATE LATEST" ]; then
echo "::error::skip_latest must be blank (update the latest tag) or exactly 'DO NOT UPDATE LATEST' (skip it). Got: '${SKIP_LATEST}'. Re-run with a valid value."
exit 1
fiThree states, no ambiguity:
|
🤖 Bedrock Review —
|
|
Fine with non-exact values failing the release job. don't need the permutations of typos covered, just have the operator redo the release |
|
Tick the box to add this pull request to the merge queue (same as
|
Closes: #36310
Problem
The
promote-latestjob incicd_6-release.ymlwas gated on a booleanupdate_latestcheckbox. Default-true or not,latestadvancing depended on an operator not unchecking it. Release26.06.22-02shipped with it unchecked, solatestsilently stalled on26.06.22-01(bothdotcms/dotcmsanddotcms/dotcms-dev) until corrected by hand. The default pull tag shouldn't hinge on human memory.Change
Replace
update_latest(boolean) withskip_latest(free text):Gate becomes:
&& github.event.inputs.skip_latest != 'DO NOT UPDATE LATEST'main. Skipping now takes a deliberate, hard-to-fat-finger action (type the exact phrase), mirroring GitHub's "type the repo name to delete" pattern.latest. The only way to skip is the exact string.promote --tracks lateston an older release line is a no-op (it only ever advances to the newest eligible GA).hold latestviacicd_evergreen-tracks-admin.ymlstill freezes the track without blocking standard/trailing.Comparison is done in an
if:expression (not interpolated into arun:), so no shell-injection surface from the free-text input.Notes
update_latesthad no other consumers (no docs, scripts, or other workflows referenced it), so the rename is self-contained.🤖 Generated with Claude Code