3.8 KiB
Release instructions
Pre-release checks
These should run successfully:
make all
;make test
;make lint
(should not change any files);make fmts
(should not change any files);go mod tidy
(should not change any files);- integration tests in frostfs-devenv.
Make release commit
Use vX.Y.Z
tag for releases and vX.Y.Z-rc.N
for release candidates
following the semantic versioning standard.
Determine the revision number for the release:
$ export FROSTFS_REVISION=X.Y.Z[-rc.N]
$ export FROSTFS_TAG_PREFIX=v
Double-check the number:
$ echo ${FROSTFS_REVISION}
Create release branch from the main branch of the origin repository:
$ git checkout -b release/${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
Update versions
Write new revision number into the root VERSION
file:
$ echo ${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION} > VERSION
Update version in Debian package changelog file
$ cat debian/changelog
Update the supported version of TrueCloudLab/frostfs-contract
module in root
README.md
if needed.
Writing changelog
Add an entry to the CHANGELOG.md
following the style established there.
- copy
Unreleased
section (next steps relate to section belowUnreleased
) - replace
Unreleased
link with the new revision number - update
Unreleased...new
andnew...old
diff-links at the bottom of the file - add optional codename and release date in the heading
- remove all empty sections such as
Added
,Removed
, etc. - make sure all changes have references to GitHub issues in
#123
format (if possible) - clean up all
Unreleased
sections and leave them empty
Make release commit
Stage changed files for commit using git add
. Commit the changes:
$ git commit -s -m 'Release '${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
Open pull request
Push release branch:
$ git push <remote> release/${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
Open pull request to the main branch of the origin repository so that the maintainers check the changes. Remove release branch after the merge.
Tag the release
Pull the main branch with release commit created in previous step. Tag the commit with PGP signature.
$ git checkout master && git pull
$ git tag -s ${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
Push the release tag
$ git push origin ${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
Post-release
Prepare and push images to a Docker Hub (if not automated)
Create Docker images for all applications and push them into Docker Hub (requires organization privileges)
$ git checkout ${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
$ make images
$ docker push truecloudlab/frostfs-storage:${FROSTFS_REVISION}
$ docker push truecloudlab/frostfs-storage-testnet:${FROSTFS_REVISION}
$ docker push truecloudlab/frostfs-ir:${FROSTFS_REVISION}
$ docker push truecloudlab/frostfs-cli:${FROSTFS_REVISION}
$ docker push truecloudlab/frostfs-adm:${FROSTFS_REVISION}
Make a proper GitHub release (if not automated)
Edit an automatically-created release on GitHub, copy things from CHANGELOG.md
.
Build and tar release binaries with make prepare-release
, attach them to
the release. Publish the release.
Update FrostFS Developer Environment
Prepare pull-request in frostfs-devenv with new versions.
Close GitHub milestone
Look up milestones and close the release one if exists.
Rebuild FrostFS LOCODE database
If new release contains LOCODE-related changes, rebuild FrostFS LOCODE database via FrostFS CLI
$ frostfs-cli util locode generate ...