This document describes the automated release process for the HyperFleet Template API specification.
Releases are fully automated via GitHub Actions. When a PR is merged to main, the release workflow (.github/workflows/release.yml) automatically creates a versioned GitHub Release with the schema artifacts attached.
Manual tagging or asset uploads are no longer required.
We follow Semantic Versioning:
- MAJOR version: Incompatible API changes (breaking changes)
- MINOR version: Backward-compatible functionality additions
- PATCH version: Backward-compatible bug fixes
- Bump the version in
main.tsp(the@infodecorator'sversionfield) - Update
CHANGELOG.mdwith the new version and changes - Build schemas:
npm run buildandnpm run build:swagger - Commit the version bump, changelog, and regenerated schemas
- Open a PR and merge to
main
The CI workflow enforces that the version in main.tsp has been bumped from the latest release tag. If unchanged, CI will fail and block the merge.
On every push to main, the release workflow:
- Extracts the version from
main.tsp - Skips if a Git tag for that version already exists (idempotent)
- Builds both schema formats
- Creates an annotated Git tag (
vX.Y.Z) - Publishes a GitHub Release with auto-generated release notes and two artifacts:
template-openapi.yaml(OpenAPI 3.0)template-swagger.yaml(OpenAPI 2.0)
The CI workflow (.github/workflows/ci.yml) runs on every PR and push to main:
- Schema consistency — Rebuilds schemas and verifies they match committed files
- OpenAPI linting — Runs
spectral lintagainst thespectral:oasruleset - Version bump check — Compares the version in
main.tspagainst the latest release tag
Latest release (always points to newest):
- Template OpenAPI 3.0:
https://github.com/openshift-hyperfleet/hyperfleet-api-spec-template/releases/latest/download/template-openapi.yaml - Template Swagger 2.0:
https://github.com/openshift-hyperfleet/hyperfleet-api-spec-template/releases/latest/download/template-swagger.yaml
Specific version:
https://github.com/openshift-hyperfleet/hyperfleet-api-spec-template/releases/download/vX.Y.Z/template-openapi.yaml
Bump the version in main.tsp before merging.
Check that the version in main.tsp is new (no existing Git tag). Verify with:
git ls-remote --tags origin | grep vX.Y.Z