2022-07-20 12:47:15 +02:00
|
|
|
---
|
|
|
|
title: Releases
|
|
|
|
---
|
|
|
|
|
2022-07-26 18:00:43 +02:00
|
|
|
## Releasing a new version
|
|
|
|
|
|
|
|
This guide walks you through the steps required to release a new version of LibreTime.
|
|
|
|
|
|
|
|
:::caution
|
|
|
|
|
2022-09-24 17:40:05 +02:00
|
|
|
This guide is still a work in progress, and doesn't cover every use cases. Depending on
|
2022-07-26 18:00:43 +02:00
|
|
|
the version bump, some steps might be wrong. For example, in case of a patch release,
|
|
|
|
the documentation requires different changes.
|
|
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
Before releasing a new version, make sure linter don't fail and tests are passing.
|
|
|
|
|
|
|
|
Start by cleaning the repository and make sure you don't have uncommitted changes:
|
|
|
|
|
|
|
|
```
|
|
|
|
git checkout main
|
|
|
|
make clean
|
|
|
|
git status
|
|
|
|
```
|
|
|
|
|
|
|
|
Choose the next version based the our [versioning schema](#versioning-schema):
|
|
|
|
|
|
|
|
```bash
|
|
|
|
export VERSION=3.0.0-beta.0
|
|
|
|
```
|
|
|
|
|
|
|
|
Create a new `release-$VERSION` branch and release commit to prepare a release pull request:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git checkout -b "release-$VERSION"
|
2022-09-12 10:24:53 +02:00
|
|
|
export COMMIT_MESSAGE="chore: release $VERSION"
|
2022-09-23 12:35:07 +02:00
|
|
|
git commit --allow-empty --message="$COMMIT_MESSAGE"
|
2022-07-26 18:00:43 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
### 1. Version bump
|
|
|
|
|
|
|
|
Write the new `$VERSION` to the VERSION file, and bump the python packages version:
|
|
|
|
|
|
|
|
```bash
|
2022-09-12 10:24:53 +02:00
|
|
|
bash tools/bump-python-version.sh "$VERSION"
|
2022-07-26 18:00:43 +02:00
|
|
|
|
|
|
|
git add .
|
2022-09-12 10:24:53 +02:00
|
|
|
git commit --fixup ":/$COMMIT_MESSAGE"
|
2022-07-26 18:00:43 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
### 2. Release note
|
|
|
|
|
|
|
|
Prepare a new release note based on the `docs/releases/unreleased.md` file. Be sure that
|
|
|
|
the filename match the releases notes naming conventions:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
ls -l docs/releases/
|
|
|
|
cp docs/releases/unreleased.md docs/releases/$VERSION.md
|
|
|
|
```
|
|
|
|
|
|
|
|
The release note file must be updated with:
|
|
|
|
|
|
|
|
- the version and date of this release,
|
|
|
|
- an auto generated features and bug fixes changelog,
|
|
|
|
- instructions for upgrading,
|
|
|
|
- deprecation notices,
|
|
|
|
- remove empty sections.
|
|
|
|
|
|
|
|
Reset and clean the `docs/releases/unreleased.md` file for a future version.
|
|
|
|
|
|
|
|
Commit the release note changes:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git add .
|
2022-09-12 10:24:53 +02:00
|
|
|
git commit --fixup ":/$COMMIT_MESSAGE"
|
2022-07-26 18:00:43 +02:00
|
|
|
```
|
|
|
|
|
2022-12-19 16:41:01 +01:00
|
|
|
### 3. Create a new pull request
|
2022-07-26 18:00:43 +02:00
|
|
|
|
|
|
|
Squash the changes and open a pull request for others to review:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git rebase --autosquash --interactive main
|
|
|
|
```
|
|
|
|
|
2022-09-24 17:40:05 +02:00
|
|
|
Merge the pull request when it's reviewed and ready.
|
2022-07-26 18:00:43 +02:00
|
|
|
|
2022-12-19 16:41:01 +01:00
|
|
|
### 4. Create and push a tag
|
2022-07-26 18:00:43 +02:00
|
|
|
|
|
|
|
Pull the merged release commit:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git checkout main
|
|
|
|
git pull upstream main
|
|
|
|
```
|
|
|
|
|
|
|
|
Make sure `HEAD` is the previously merged release commit and tag it with the new version:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git show --quiet
|
|
|
|
|
|
|
|
git tag -a -m "$VERSION" "$VERSION"
|
|
|
|
```
|
|
|
|
|
2022-07-11 12:39:56 +02:00
|
|
|
Generate the changelog for the newly tagged version:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
make changelog
|
|
|
|
|
|
|
|
git add .
|
|
|
|
git commit -m "chore: generate changelog for $VERSION"
|
|
|
|
```
|
|
|
|
|
2022-07-26 18:00:43 +02:00
|
|
|
Push the tag upstream to finalize the release process:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
git push upstream main --follow-tags
|
|
|
|
```
|