Agent Skill · Flux CD

flux-controller-patch-releases

Run the upstream Flux controller patch release procedure for helm-controller, image-automation-controller, image-reflector-controller, kustomize-controller, notification-controller, source-controller, and source-watcher. Use when preparing a new controller patch release from a release series branch, drafting changelog entries, tagging releases, and opening the follow-up changelog PRs back to main.

Provider: Flux CD Path in repo: internal/skills/flux-controller-patch-releases/SKILL.md

Skill body

Flux Controller Patch Releases

Use this skill for upstream Flux controller patch releases only. Do not use it for flux2, pkg, or other non-controller repos.

Supported controllers:

Important rules

Preconditions

Release Flow

For each controller:

  1. Refresh local state.
    • git fetch --all --tags --prune
    • git switch release/vX.Y.x
    • git pull origin release/vX.Y.x
  2. Create the release preparation branch exactly from the release series branch.
    • git switch -c release-vX.Y.Z release/vX.Y.x
  3. Draft the new CHANGELOG.md entry.
    • Use the existing changelog structure in that repo.
    • Use the current date from date.
    • Build the entry from the commits merged into the release series branch since the previous tag.
    • Prefer PR titles over commit subjects for bullets.
    • Check the PRs that introduced the changes; do not infer titles from local commit messages.
    • For dependency-update PRs, inspect the PR body, any referenced upstream PRs, and the go.mod diff for notable content (see “Dependency update PRs” below) rather than settling for a generic bump line.
    • In the intro paragraph, summarize the concrete bug fixes shipped in the patch release.
  4. Commit the changelog entry.
    • git add CHANGELOG.md
    • git commit -s -m "Add changelog entry for vX.Y.Z"
  5. Apply the release version bump exactly as documented.
    • Update the controller self-API version in the root go.mod.
    • Update config/manager/kustomization.yaml newTag to vX.Y.Z.
    • Commit with:
      • git add go.mod config/manager/kustomization.yaml
      • git commit -s -m "Release vX.Y.Z"
  6. Push the release preparation branch.
    • git push origin release-vX.Y.Z
  7. Open and merge the release PR into the release series branch.
    • Base: release/vX.Y.x
    • Head: release-vX.Y.Z
  8. Refresh the release series branch after merge.
    • git switch release/vX.Y.x
    • git pull origin release/vX.Y.x
  9. Create and push signed tags from the updated release series branch. Push the api/ tag first — the release tag depends on it.
    • git tag -s -m "api/vX.Y.Z" api/vX.Y.Z
    • git push origin api/vX.Y.Z
    • git tag -s -m "vX.Y.Z" vX.Y.Z
    • git push origin vX.Y.Z
  10. Confirm the non-api/ tag triggered the release workflow.

  11. Cherry-pick only the changelog commit back to main.
    • git switch main
    • git pull origin main
    • git switch -c pick-changelog-vX.Y.Z main
    • git cherry-pick -x <Add changelog entry commit>
    • git push origin pick-changelog-vX.Y.Z
    • Open PR from pick-changelog-vX.Y.Z to main
    • Do this one controller at a time — never chain several controllers’ cherry-picks into a single shell invocation. If such a batch is interrupted partway, the branches it already created make a later git switch -c fail, which silently leaves you on main, so the next git cherry-pick lands the changelog commit on local main instead of the pick branch. Before cherry-picking, confirm you are on pick-changelog-vX.Y.Z; if the branch already exists, switch to it (or delete and recreate it) rather than letting switch -c fail.

How To Build The Changelog Entry

For a patch release, gather:

Write the new section at the top of CHANGELOG.md:

Rules:

Dependency update PRs

Do not reduce a dependency bump to a generic “Update fluxcd/pkg dependencies” line and move on — the user-facing substance is usually hidden inside the bump.

Critical Checks

Updating this skill

Useful Local Queries

Skill frontmatter

license: Apache-2.0