docs/release.md
This document describes the procedure for releasing a new version of SOPS. It is intended for maintainers of the project, but may be useful for anyone interested in the release process.
The release is performed by creating a signed tag for the release, and pushing it to GitHub. This will automatically trigger a GitHub Actions workflow that builds the binaries, packages, SBOMs, and other artifacts for the release using GoReleaser, and uploads them to GitHub.
The configuration for GoReleaser is in the file
.goreleaser.yaml. The configuration for the GitHub
Actions workflow is in the file
release.yml.
This configuration is quite sophisticated, and ensures at least the following:
main branch. At present, this means that all pull requests attached to the
milestone for the release are merged. If there are any pull requests that
should not be included in the release, move them to a different milestone.CHANGELOG.md
file. This should include a summary of all changes since the last release,
including references to any relevant pull requests.version/version.go
to the new version number.main.main branch. Ensure your local copy of the main branch is up-to-date:
git checkout main
git pull
Create a signed tag for the release, using the following command:
git tag -s -m <version> <version>
where <version> is the version number of the release. The version number
should be in the form vX.Y.Z, where X, Y, and Z are integers. The
version number should be incremented according to
semantic versioning.
Push the tag to GitHub:
git push origin <version>
Ensure the release is built successfully on GitHub Actions. This will automatically create a release on GitHub.