|
| 1 | +# Developers |
| 2 | + |
| 3 | +## Release management |
| 4 | + |
| 5 | +We manage releases through the tools provided by the Julia community for creating and |
| 6 | +publishing new Julia package releases. Specifically, that means |
| 7 | +* we set the libtrixi version in |
| 8 | + [`LibTrixi.jl/Project.toml`](https://github.com/trixi-framework/libtrixi/blob/main/LibTrixi.jl/Project.toml), |
| 9 | +* we use the [Julia Registrator app](https://github.com/JuliaRegistries/Registrator.jl) |
| 10 | + for GitHub to register new versions of the Julia package LibTrixi.jl, and |
| 11 | +* we rely on the Julia [TagBot](https://github.com/JuliaRegistries/TagBot) |
| 12 | + to create associacted tags and GitHub releases once the Julia package is registered. |
| 13 | + |
| 14 | +To support the ability to have TagBot create top-level releases even though the Julia |
| 15 | +package LibTrixi.jl lives in a subdirectory, we have symlinked `LibTrixi.jl/Project.toml` to |
| 16 | +the repository root. |
| 17 | + |
| 18 | +### Creating a new release |
| 19 | +To create a new libtrixi release, follow these steps: |
| 20 | +1. Ensure that all tests have passed for the current commit in `main` and that coverage is |
| 21 | + OK (>95%). |
| 22 | +2. Bump the version in |
| 23 | + [`LibTrixi.jl/Project.toml`](https://github.com/trixi-framework/libtrixi/blob/main/LibTrixi.jl/Project.toml) |
| 24 | + to the next release version, following [semantic versioning](https://semver.org/). For |
| 25 | + example, if the current release is `v0.1.0`, the next release with breaking changes would |
| 26 | + be `v0.2.0`, while the next non-breaking release would be `v0.1.1`. Commit this change to `main`. |
| 27 | +3. Go to the [latest commit in `main`](https://github.com/trixi-framework/libtrixi/commit/HEAD) |
| 28 | + on the GitHub website. This should be the commit where you just updated the version. |
| 29 | + Scroll down and submit the following comment |
| 30 | + ``` |
| 31 | + @JuliaRegistrator register subdir=LibTrixi.jl |
| 32 | + ``` |
| 33 | + This will prompt the [Julia Registrator app](https://github.com/JuliaRegistries/Registrator.jl/) |
| 34 | + to create a new release of the Julia package LibTrixi.jl. If there are no issues found |
| 35 | + that would prevent auto-merging the version update PR in the Julia General registry |
| 36 | + (e.g., if you did not skip a version number), the new version will become active after |
| 37 | + about 15 minutes. See the full set of rules |
| 38 | + [here](https://github.com/JuliaRegistries/Registrator.jl/). |
| 39 | +4. The Julia Registrator app is chatty and will let you know if your registration request |
| 40 | + meets all criteria for an auto-merge. Once this is the case, bump the version in |
| 41 | + [`LibTrixi.jl/Project.toml`](https://github.com/trixi-framework/libtrixi/blob/main/LibTrixi.jl/Project.toml) |
| 42 | + again and set it to the next development version. We do this to prevent confusion about |
| 43 | + whether the current state of the repository is identical to the latest release or not. |
| 44 | + The next development version is obtained by increasing the *patch* number and appending |
| 45 | + `-pre`. For example, if you just released version `v0.1.1`, the next development version |
| 46 | + would be `v0.1.2-pre`. |
0 commit comments