Skip to main content

Cutting a Release

Overview

Releases follow this sequence:

main → release/x.y.z branch → RC tags → final x.y.z tag → Helm publish + docs

The auto-tag.yml workflow handles tag creation automatically. A human triggers release-finalize.yml to promote an RC to a stable release.


Step 1 — Create the release branch

git checkout main && git pull
git checkout -b release/x.y.z
git push origin release/x.y.z

Pushing the branch triggers auto-tag.yml which creates x.y.z-rc.1.


Step 2 — Validate the RC

CheckHow
All CI greenGitHub Actions on the RC tag
Helm chart installs cleanlyhelm-chart-test.yml run against the RC image
Smoke test on Kindmake kind-up && make smoke-test VERSION=x.y.z-rc.1

If fixes are needed, merge them into the release branch — auto-tag.yml creates x.y.z-rc.2, rc.3, etc.


Step 3 — Finalize the release

Trigger release-finalize.yml via GitHub Actions or CLI:

gh workflow run release-finalize.yml \
--repo cnoe-io/ai-platform-engineering \
-f version=x.y.z

This workflow:

  • Promotes x.y.z-rc.Nx.y.z
  • Publishes the Helm chart to oci://ghcr.io/cnoe-io/charts/ai-platform-engineering
  • Creates a GitHub Release with auto-generated notes

Step 4 — Generate release docs

docs-release.yml triggers automatically on the x.y.z tag and opens a PR with a generated release blog post. Review and merge it.

To run manually:

# In the docs worktree
/release-docs

The /release-docs skill produces docs/releases/YYYY-MM-DD-release-x-y-z.md with release notes and the upgrade guide inline.


Step 5 — Update docs surfaces

Run the /update-docs skill to sync all remaining docs surfaces:

/update-docs

This checks and fixes:

  • Homepage Helm --version string in docs/src/pages/index.tsx
  • Navbar version label

Versioned docs are no longer committed. Pushing a release tag runs the [Docs] Register Published Version workflow, which adds the version to docs/published-versions.json (applying the retention policy) and opens a tiny auto-merging PR. The versioned snapshots are then materialised from release tags at build time by docs/scripts/generate-versioned-docs.js during the GitHub Pages deploy — nothing under versioned_docs/ is stored in git.

See Skills → Overview for the full checklist.


Step 6 — Communicate

ChannelWhat to post
#cnoe-sig-agentic-ai SlackLink to release blog post + one-line highlight
GitHub DiscussionsAnnounce new release with upgrade notes link
Weekly community meetingDemo new features if significant

Hotfix releases

For urgent fixes on an already-released version:

git checkout -b release/x.y.z-hotfix tags/x.y.z
# apply fix, push
# auto-tag creates x.y.z-hotfix.1
# when ready:
gh workflow run release-manual.yml -f version=x.y.z.1