From 38c220af465a7ce2735413fd4902ff5c54cb209f Mon Sep 17 00:00:00 2001 From: Michael Schlottke-Lakemper Date: Fri, 26 Jan 2024 08:44:03 +0100 Subject: [PATCH] Add developer documentation on the release process --- development.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 development.md diff --git a/development.md b/development.md new file mode 100644 index 0000000..1368e25 --- /dev/null +++ b/development.md @@ -0,0 +1,37 @@ +# Information for developers + +## Release management +To create a new release for smesh, perform the following steps: +1) Make sure that all PRs and changes that you want to go into the release are merged to + `main` and that the latest commit on `main` has passed all CI tests. +2) Determine the currently released version of Smesh.jl, e.g., on the + [release page](https://github.com/trixi-framework/smesh/releases). For this manual, + we will assume that the latest release was `v0.2.3`. +3) Decide on the next version number. We follow [semantic versioning](https://semver.org/), + thus each version is of the form `vX.Y.Z` where `X` is the major version, `Y` the minor + version, and `Z` the patch version. In this manual, we assume that the major version is + always `0`, thus the decision process on the new version is as follows: + * If the new release contains *breaking changes* (i.e., user code might not work as + before without modifications), increase the *minor* version by one and set the + *patch* version to zero. In our example, the new version should thus be `v0.3.0`. + * If the new release only contains minor modifications and/or bug fixes, the *minor* + version is kept as-is and the *patch* version is increased by one. In our example, the + new version should thus be `v0.2.4`. +4) Edit the string in the + [`VERSION`](https://github.com/trixi-framework/Smesh.jl/blob/main/VERSION) + and set it to the new version. Push/merge this change to `main`. +5) Go to GitHub and create a new release, either by going to the + [release page](https://github.com/trixi-framework/smesh/releases) and clicking on "Draft + a new release" or by directly following + [this link](https://github.com/trixi-framework/smesh/releases/new). + * Click on "Choose a tag", enter the new version (e.g., `v0.2.4`, *including* the `v` + prefix), and select "Create a new tag". + * Click on "Generate release notes". + * Click on "Publish release". +7) The new release is immediately usable and visible on the release page \o/ +8) To make sure people do not mistake the latest state of `main` as the latest release, we + set the version in the `Project.toml` to a *development* version. The development version + should be the latest released version, with the patch version incremented by one, and the + `-dev` suffix added. For example, if you just released `v0.3.0`, the new development + version should be `v0.3.1-dev`. If you just released `v0.2.4`, the new development + version should be `v0.2.5-dev`.