Releasing a suite component¶
This page is for the person who tags a release of hangar, Tower or flightdeck. Every component follows the same checklist, so a version means the same thing everywhere. Which versions make up a suite release is on Compatibility.
Versions¶
A release is a vX.Y.Z tag on main. Before 1.0, a minor bump may break things, and its changelog says how. Each repo keeps its version in one place:
| Component | Version source | Prints it |
|---|---|---|
| hangar | pyproject.toml |
The image label org.opencontainers.image.version |
| Tower | server/aw/__init__.py |
GET /api/health (version) |
| flightdeck | pyproject.toml and src/flightdeck/__init__.py |
flightdeck version |
Each repo has a CHANGELOG.md whose newest section is ## Unreleased. Every merged change that a user would notice adds a line there.
The checklist¶
Copy it into the release's Jira ticket and tick each line.
- Changelog. Rename
## Unreleasedto## vX.Y.Z: <a name>, start a new empty## Unreleased, and bump the version source in the same PR. - Green CI on that commit. Merge the PR, then wait for every required check to pass on the merge commit in
main. Don't tag a commit whose checks were skipped. - Tag it. Run
git tag -a vX.Y.Z -m vX.Y.Z <sha>and push the tag. The release workflow refuses a tag that doesn't match the version source. - GitHub release. The release workflow publishes it, with the changelog section as its notes. Check that it exists and reads well.
- Docs version. The docs site names the release on its front page or release notes. hangar also adds a row to
docs/releases/README.md. - Deployed sha matches the tag. After the deploy, compare the running image's commit or digest with the tag. A mismatch means the deploy is not the release.
- Compatibility. Update the row on Compatibility in agent-factory, with the Airframe theme the release vendors.
Repository settings¶
Every repo has "Automatically delete head branches" turned on. A stacked PR then retargets to main when its base merges, instead of merging into a dead branch.