frostfs-node/docs/release-instruction.md
Vitaliy Potyarkin f4603602ac
All checks were successful
Tests and linters / Run gofumpt (pull_request) Successful in 1m51s
DCO action / DCO (pull_request) Successful in 1m57s
Tests and linters / gopls check (pull_request) Successful in 4m16s
Tests and linters / Lint (pull_request) Successful in 4m29s
Tests and linters / Tests with -race (pull_request) Successful in 4m32s
Pre-commit hooks / Pre-commit (pull_request) Successful in 3m1s
Tests and linters / Tests (pull_request) Successful in 3m28s
Tests and linters / Staticcheck (pull_request) Successful in 3m43s
Vulncheck / Vulncheck (pull_request) Successful in 1m56s
Build / Build Components (pull_request) Successful in 2m53s
[#1474] Stop using obsolete .github directory
This commit is a part of multi-repo cleanup effort:
TrueCloudLab/frostfs-infra#136

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-11-06 15:26:28 +03:00

3.7 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 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 below Unreleased)
  • replace Unreleased link with the new revision number
  • update Unreleased...new and new...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 relevant 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 release (if not automated)

Edit an automatically-created release on git.frostfs.info, 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 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 ...