This repo has two Go modules, the top level module and the api module. The top level module is for the Tinkerbell and Agent binaries. The api module is for the API definitions.
The top level module is versioned as vX.Y.Z. The api module is versioned as api/vX.Y.Z. Both version tags are created using the ./script/tag-release.sh script.
For version vX.Y.Z:
- Create the annotated tag
NOTE: To use your GPG signature when pushing the tag, use
SIGN_TAG=1 ./script/tag-release.sh v0.x.yinstead./script/tag-release.sh v0.x.y
- Push the tags to the GitHub repository. This will automatically trigger a Github Action to create a release.
NOTE:
originshould be the name of the remote pointing togithub.com/tinkerbell/tinkerbellgit push origin v0.x.ygit push origin api/v0.x.y
- Review the release on GitHub.
Note
The api module tag does not create a GitHub release. It only creates a tag in the repository.
Releasing requires a particular set of permissions.
- Tag push access to the GitHub repository
There are 2 types of releases: (1) Git tagged releases and (2) mainline releases. Both types of releases publish container images and Helm chart images to the GitHub Container Registry (ghcr.io). They can be found at the GitHub Packages page.
Git tagged releases are releases that have a corresponding Git tag (vX.Y.Z). Run git tag to see the list of Git tags or view them on the GitHub tags page. Git tagged releases are made at the discretion of the maintainers. Generally, if there is a major bug fix in main then a new Git tagged release will be made.
If there are no major bug fixes, releases are generally made when a maintainer deems enough fixes and/or features have accumulated.
In a Git tagged release, at a minimum, the following artifacts are created along with a Git tag:
- Tinkerbell container image
- Tinkerbell Agent container image
- Tinkerbell Helm chart OCI image
- Tinkerbell AMD64 and ARM64 embedded binaries
- An official GitHub release
Mainline releases are releases that do not have a corresponding Git tag. The tagging that occurs is only container image and Helm chart image tagging. They are made automatically on each merge to main. The tag format is vX.Y.(Z+1)-<short-commit-hash>. For example, if the latest Git tagged release is v0.21.0 and the commit hash of the merge to main is 0f5c5863, then the mainline release artifacts tag will be v0.21.1-0f5c5863.
In a mainline release, at a minimum, the following artifacts are created: