2020-11-16 14:03:16 +00:00
|
|
|
# Release instructions
|
|
|
|
|
|
|
|
## Pre-release checks
|
|
|
|
|
|
|
|
These should run successfully:
|
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
* `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);
|
2024-09-11 09:40:04 +00:00
|
|
|
* integration tests in [frostfs-devenv](https://git.frostfs.info/TrueCloudLab/frostfs-dev-env).
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
## Make release commit
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
Use `vX.Y.Z` tag for releases and `vX.Y.Z-rc.N` for release candidates
|
|
|
|
following the [semantic versioning](https://semver.org/) standard.
|
2021-06-03 16:39:27 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
Determine the revision number for the release:
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
```shell
|
2023-01-09 07:04:58 +00:00
|
|
|
$ export FROSTFS_REVISION=X.Y.Z[-rc.N]
|
|
|
|
$ export FROSTFS_TAG_PREFIX=v
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Double-check the number:
|
|
|
|
|
|
|
|
```shell
|
2023-01-09 07:04:58 +00:00
|
|
|
$ echo ${FROSTFS_REVISION}
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Create release branch from the main branch of the origin repository:
|
|
|
|
|
|
|
|
```shell
|
2023-01-09 07:04:58 +00:00
|
|
|
$ git checkout -b release/${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
### Update versions
|
2022-07-05 13:56:30 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
Write new revision number into the root `VERSION` file:
|
2022-07-05 13:56:30 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
```shell
|
2023-01-09 07:04:58 +00:00
|
|
|
$ echo ${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION} > VERSION
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-12-23 17:35:35 +00:00
|
|
|
Update the supported version of `TrueCloudLab/frostfs-contract` module in root
|
2022-09-14 09:05:03 +00:00
|
|
|
`README.md` if needed.
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
### Writing changelog
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
Add an entry to the `CHANGELOG.md` following the style established there.
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
* 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.
|
2024-11-06 10:39:46 +00:00
|
|
|
* make sure all changes have references to relevant issues in `#123` format (if possible)
|
2022-09-14 09:05:03 +00:00
|
|
|
* clean up all `Unreleased` sections and leave them empty
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
### Make release commit
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
Stage changed files for commit using `git add`. Commit the changes:
|
|
|
|
|
|
|
|
```shell
|
2023-01-09 07:04:58 +00:00
|
|
|
$ git commit -s -m 'Release '${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
### Open pull request
|
|
|
|
|
|
|
|
Push release branch:
|
|
|
|
|
|
|
|
```shell
|
2023-01-09 07:04:58 +00:00
|
|
|
$ git push <remote> release/${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
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
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
Pull the main branch with release commit created in previous step. Tag the commit
|
|
|
|
with PGP signature.
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ git checkout master && git pull
|
2023-01-09 07:04:58 +00:00
|
|
|
$ git tag -s ${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Push the release tag
|
|
|
|
|
|
|
|
```shell
|
2023-01-09 07:04:58 +00:00
|
|
|
$ git push origin ${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## 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
|
2023-01-09 07:04:58 +00:00
|
|
|
(requires [organization](https://hub.docker.com/u/truecloudlab) privileges)
|
2022-09-14 09:05:03 +00:00
|
|
|
|
|
|
|
```shell
|
2023-01-09 07:04:58 +00:00
|
|
|
$ git checkout ${FROSTFS_TAG_PREFIX}${FROSTFS_REVISION}
|
2022-09-14 09:05:03 +00:00
|
|
|
$ make images
|
2023-01-09 07:04:58 +00:00
|
|
|
$ 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}
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|
|
|
|
|
2024-11-06 10:39:46 +00:00
|
|
|
### Make a proper release (if not automated)
|
2022-09-14 09:05:03 +00:00
|
|
|
|
2024-11-06 10:39:46 +00:00
|
|
|
Edit an automatically-created release on git.frostfs.info, copy things from `CHANGELOG.md`.
|
2021-08-31 13:14:04 +00:00
|
|
|
Build and tar release binaries with `make prepare-release`, attach them to
|
|
|
|
the release. Publish the release.
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2023-01-09 07:04:58 +00:00
|
|
|
### Update FrostFS Developer Environment
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2024-09-11 09:40:04 +00:00
|
|
|
Prepare pull-request in [frostfs-devenv](https://git.frostfs.info/TrueCloudLab/frostfs-dev-env)
|
2022-09-14 09:05:03 +00:00
|
|
|
with new versions.
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2024-11-06 10:39:46 +00:00
|
|
|
### Close milestone
|
2022-09-14 09:05:03 +00:00
|
|
|
|
2024-09-11 09:40:04 +00:00
|
|
|
Look up [milestones](https://git.frostfs.info/TrueCloudLab/frostfs-node/milestones) and close the release one if exists.
|
2022-09-14 09:05:03 +00:00
|
|
|
|
2023-01-09 07:04:58 +00:00
|
|
|
### Rebuild FrostFS LOCODE database
|
2020-11-16 14:03:16 +00:00
|
|
|
|
2023-01-09 07:04:58 +00:00
|
|
|
If new release contains LOCODE-related changes, rebuild FrostFS LOCODE database via FrostFS CLI
|
2021-02-15 07:36:42 +00:00
|
|
|
|
2022-09-14 09:05:03 +00:00
|
|
|
```shell
|
2022-12-23 17:35:35 +00:00
|
|
|
$ frostfs-cli util locode generate ...
|
2022-09-14 09:05:03 +00:00
|
|
|
```
|