Skip to content

ci(release): cut 1.x maintenance releases from support/1.x with major/minor docker tags#1980

Merged
jfallows merged 6 commits into
support/1.xfrom
claude/gitflow-support-branch-1x-ss82ns
Jul 1, 2026
Merged

ci(release): cut 1.x maintenance releases from support/1.x with major/minor docker tags#1980
jfallows merged 6 commits into
support/1.xfrom
claude/gitflow-support-branch-1x-ss82ns

Conversation

@jfallows

@jfallows jfallows commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Description

Enables git-flow support/1.x releases so 1.x minor/patch versions can be cut from support/1.x while develop moves on to v2.

  • The release base is the branch the workflow is dispatched from (github.ref_name) — no manual base input, so the ref and base can't diverge.
  • A fail-fast guard rejects a version that does not match the branch's line: support/N.x only accepts N.*, and a develop run is blocked when a support/<major>.x branch already exists (so a 1.x release can't be cut from develop by mistake).
  • Docker images publish moving major (1) and major.minor (1.5) tags alongside the exact major.minor.patch. The floating latest / alpine pointers move only for the highest stable release across all tags, so support/1.x keeps latest until a stable 2.x ships from develop; pre-releases publish only their exact version tag.
  • A support/* release merges into the support branch and tags only — it never advances main or back-merges into develop. Mainline (develop) releases keep the existing git-flow finish.

Targets support/1.x. Companion PR against develop (claude/release-workflow-support-branches-ss82ns) brings the same workflow to the mainline so v2 releases also emit the new 2 / 2.0 tags.

Follow-up (deferred): switch examples/*/compose.yaml defaults on support/1.x from ${ZILLA_VERSION:-latest} to ${ZILLA_VERSION:-1}.

No associated issue.

🤖 Generated with Claude Code


Generated by Claude Code

claude added 6 commits July 1, 2026 18:44
Parameterize the release workflow with a `base` input so releases can be
cut from either develop (mainline) or support/1.x (1.x maintenance):

- prepare: check out and release from `base`; support releases push the
  release branch only (no `-s ours` no-merge into develop).
- deploy: publish moving `major` and `major.minor` docker tags alongside
  the exact `major.minor.patch`; `latest` moves only for the highest
  stable release, and pre-releases publish only their exact version tag.
- finalize: mainline keeps the git-flow finish (merge to main, tag,
  back-merge develop); support merges into the support branch and tags
  only, never touching main or develop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5bGVS9PYHAbXzqiHZDXie
…ersion

- Remove the manual `base` input; the release base is the branch the run is
  dispatched on (github.ref_name), so the ref and base can no longer diverge.
- Add a fail-fast validation: a support/N.x run only accepts N.* versions, and
  a develop run is rejected when a support/<major>.x branch already exists
  (so a 1.x release can't be cut from develop by mistake).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5bGVS9PYHAbXzqiHZDXie
The build workflow only triggered for develop (and feature/** in zilla), so
pull requests targeting support/1.x were never built. Add support/** to the
push and pull_request branch filters so support branches build like develop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5bGVS9PYHAbXzqiHZDXie
Consolidate the per-line CHANGELOG steps into a single step that explicitly
checks out the base branch (github.ref_name) before generating, committing and
pushing CHANGELOG.md. Both develop and support/1.x end up with a complete,
regenerated CHANGELOG for their line instead of relying on git-flow leaving
HEAD on develop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5bGVS9PYHAbXzqiHZDXie
Restore the release branch's base into local git config
(gitflow.branch.release/<version>.base) before a single `git flow release
finish`. git-flow stores that base only in local .git/config and never pushes
it, so it is absent in the finalize job's fresh checkout; restoring it lets one
finish command do the right thing per line: a develop release merges into main
and back-merges develop, while a support/N.x release merges into that support
branch and tags only, never touching main or develop. Replaces the hand-rolled
support finish.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5bGVS9PYHAbXzqiHZDXie

@jfallows jfallows left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jfallows jfallows merged commit 413c7b6 into support/1.x Jul 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants