110 lines
1.8 KiB
Markdown
110 lines
1.8 KiB
Markdown
# Make a release
|
|
|
|
Once we're ready to release a new version of the software, we can use the following process:
|
|
|
|
1. Export the new release version
|
|
|
|
```sh
|
|
export NEXT_RELEASE=1.3.0
|
|
```
|
|
|
|
2. Export the previous release version
|
|
|
|
```sh
|
|
export PREVIOUS_RELEASE=1.2.9
|
|
```
|
|
|
|
3. Pull the latest version of the `develop` branch. Use `stable` if you're releasing a bugfix.
|
|
|
|
::::{tab-set}
|
|
|
|
:::{tab-item} Bugfix release
|
|
:sync: bugfix
|
|
|
|
```sh
|
|
git checkout stable
|
|
git pull
|
|
```
|
|
|
|
:::
|
|
|
|
:::{tab-item} Feature release
|
|
:sync: feature
|
|
|
|
```sh
|
|
git checkout develop
|
|
git pull
|
|
```
|
|
|
|
:::
|
|
|
|
::::
|
|
|
|
4. Compile the changelog
|
|
|
|
```sh
|
|
towncrier build --version $NEXT_RELEASE
|
|
```
|
|
|
|
5. Check the output and fix typos and mistakes
|
|
6. Add a list of contributors
|
|
|
|
```sh
|
|
python3 scripts/get-contributions-stats.py $NEXT_RELEASE # Output a list of contributors
|
|
git log $PREVIOUS_RELEASE.. --format="- %aN" --reverse | sort | uniq # Get a list of all commit authors
|
|
nano CHANGELOG.md # Add these lists to the CHANGELOG.md
|
|
```
|
|
|
|
7. Update the next release version
|
|
|
|
```sh
|
|
cd api
|
|
poetry version "$NEXT_RELEASE"
|
|
cd ..
|
|
```
|
|
|
|
8. Commit all changes
|
|
|
|
```sh
|
|
git add .
|
|
git commit -m "Version bump and changelog for $NEXT_RELEASE"
|
|
```
|
|
|
|
9. Create a tag
|
|
|
|
```sh
|
|
git tag $NEXT_RELEASE
|
|
```
|
|
|
|
10. Publish the new tag to GitLab
|
|
|
|
```sh
|
|
git push --tags && git push
|
|
```
|
|
|
|
11. Merge your changes into the alternate branch
|
|
|
|
::::{tab-set}
|
|
|
|
:::{tab-item} Bugfix release
|
|
:sync: bugfix
|
|
|
|
```sh
|
|
git checkout develop && git merge stable && git push
|
|
```
|
|
|
|
:::
|
|
|
|
:::{tab-item} Feature release
|
|
:sync: feature
|
|
|
|
```sh
|
|
git checkout stable && git merge develop && git push
|
|
```
|
|
|
|
:::
|
|
|
|
::::
|
|
|
|
Don't forget to create a blog post to announce the new release!
|