Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add developer documentation on the release process #12

Merged
merged 1 commit into from
Jan 26, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions development.md
Original file line number Diff line number Diff line change
@@ -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`.