2022-07-05 10:07:15 -04:00
# Release Checklist
2023-01-11 12:47:04 -05:00
This checklist will prepare `v1.3.0` from `v1.2.0` (minor release) or `v1.3.1` from `v1.3.0` (patch release). Adjust your version numbers accordingly.
2022-07-05 10:07:15 -04:00
2023-01-11 12:47:04 -05:00
## Preparation
2022-09-26 09:52:31 -04:00
2023-01-11 12:47:04 -05:00
1. Search the code for TODOs and FIXMEs that should be resolved before releasing.
2. [Update titles and labels for all PRs relevant for this release ](/dev-docs/conventions.md#pr-conventions ) to aid in the [changelog generation ](/.github/release.yml ).
2022-09-26 09:52:31 -04:00
2023-01-11 12:47:04 -05:00
## Automated release
2022-12-01 09:43:40 -05:00
2023-01-11 12:47:04 -05:00
Releases should be performed using [the automated release pipeline ](https://github.com/edgelesssys/constellation/actions/workflows/release.yml ).
2022-09-26 09:52:31 -04:00
2023-01-11 12:47:04 -05:00
### Patch release
2022-09-26 09:52:31 -04:00
2023-01-11 12:47:04 -05:00
1. `cherry-pick` (only) the required commits from `main`
2023-02-20 04:44:16 -05:00
* Check PRs with label [needs-backport ](https://github.com/edgelesssys/constellation/pulls?q=is%3Apr+is%3Aclosed+label%3A%22needs+backport%22 ) to find candidates that should be included in a patch release.
2023-01-11 12:47:04 -05:00
2. trigger the automated release pipeline from the existing minor version branch:
```sh
2023-02-20 04:44:16 -05:00
ver=v1.3.1 # replace me
2023-01-11 12:47:04 -05:00
minor=$(echo $ver | cut -d '.' -f 1,2)
gh workflow run release.yml --ref release/v$minor -F version=$ver -F kind=patch
```
3. wait for the pipeline to finish
4. look over the autogenerated draft release and publish it
2022-11-08 12:32:59 -05:00
2023-01-11 12:47:04 -05:00
### Minor release
2022-10-10 06:05:48 -04:00
2023-01-11 12:47:04 -05:00
1. Merge ready PRs
2. trigger the automated release pipeline from `main` :
```sh
2023-02-20 04:44:16 -05:00
ver=v1.3.0 # replace me
2023-01-11 12:47:04 -05:00
minor=$(echo $ver | cut -d '.' -f 1,2)
gh workflow run release.yml --ref main -F version=$ver -F kind=minor
```
3. wait for the pipeline to finish
4. look over the autogenerated draft release and publish it
## Post release steps
1. Milestones management
2022-09-20 05:57:52 -04:00
1. Create a new milestone for the next release
2. Add the next release manager and an approximate release date to the milestone description
3. Close the milestone for the release
4. Move open issues and PRs from closed milestone to next milestone
2023-01-11 12:47:04 -05:00
2. If the release is a minor version release, tag the latest commit on main as the start of the next pre-release phase.
2022-11-08 12:32:59 -05:00
2022-09-21 08:45:30 -04:00
```sh
2022-12-01 04:46:04 -05:00
nextMinorVer=$(echo "${ver}" | awk -F. -v OFS=. '{$2 += 1 ; print}')
2022-09-21 08:45:30 -04:00
git checkout main
2022-12-13 06:04:58 -05:00
git pull
2022-12-01 04:46:04 -05:00
git tag v${nextMinorVer}-pre
git push origin refs/tags/v${nextMinorVer}-pre
2022-09-21 08:45:30 -04:00
```