|
| 1 | +# Torrust Tracker Release Process (draft) |
| 2 | + |
| 3 | +The purpose of this document is to describe the release process. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +Torrust Tracker is published in this order: |
| 8 | + |
| 9 | +1. `develop` branch is ready for publishing. |
| 10 | +2. create `release: version (semantic version)` commit. |
| 11 | +3. push release commit to `main` branch. |
| 12 | +4. check all status checks succeed for `main` branch. |
| 13 | +5. push `main` branch to `releases\v(semantic version)` branch. |
| 14 | +6. check all status checks success for `releases\v(semantic version)` branch. |
| 15 | +7. create signed `v(semantic version)` tag. |
| 16 | +8. create github release from `v(semantic version)` tag. |
| 17 | +9. merge `main` branch into `develop` branch. |
| 18 | + |
| 19 | +- At step `1.`, `develop` is automatically published to `dockerhub`. |
| 20 | +- At step `3.`, `main` is automatically published to `dockerhub`. |
| 21 | +- At step `5.`, `releases\v(semantic version)` is automatically published to `dockerhub` and `crate.io`. |
| 22 | + |
| 23 | +## Development Branch |
| 24 | + |
| 25 | +The `develop` branch, the default branch for the repository is automatically published to dockerhub with the `develop` label. This process happens automatically when a pull request is merged in, and the `container.yaml` workflow is triggered. |
| 26 | + |
| 27 | +## Main Branch |
| 28 | + |
| 29 | +The `main` branch is the staging branch for releases. |
| 30 | + |
| 31 | +A release commit needs to be made that prepares the repository for the release, this commit should include: |
| 32 | + |
| 33 | +- Changing the semantic version. |
| 34 | +- Finalizing the release notes and changelog. |
| 35 | + |
| 36 | +The title of the commit should be: `release: version (semantic version)`. |
| 37 | + |
| 38 | +This commit should be committed upon the head of the development branch, and pushed to the `main` branch. |
| 39 | + |
| 40 | +Once the release has succeeded, the `main` branch should be merged back into the `develop` branch. |
| 41 | + |
| 42 | +## Releases Branch |
| 43 | + |
| 44 | +According to the patten `releases/v(semantic version)`, the `main` branch head is published to here to trigger the deployment workflows. |
| 45 | + |
| 46 | +The repository deployment environment for crates.io is only available for the `releases/**/*` patten of branches. |
| 47 | + |
| 48 | +Once the publishing workflows have succeeded; we can make the git-tag. |
| 49 | + |
| 50 | +## Release Tag |
| 51 | + |
| 52 | +Create a Signed Tag with a short message in the form `v(semantic version)` and push it to the repository. |
| 53 | + |
| 54 | +## Github Release |
| 55 | + |
| 56 | +From the newly published tag, create a Github Release using the web-interface. |
| 57 | + |
| 58 | + |
| 59 | +## Merge back into development branch |
| 60 | + |
| 61 | +After this is all successful, the `main` branch should be merged into the `develop` branch. |
0 commit comments