To create a new release for smesh, perform the following steps:
- Make sure that all PRs and changes that you want to go into the release are merged to
mainand that the latest commit onmainhas passed all CI tests. - Determine the currently released version of Smesh.jl, e.g., on the
release page. For this manual,
we will assume that the latest release was
v0.2.3. - Decide on the next version number. We follow semantic versioning,
thus each version is of the form
vX.Y.ZwhereXis the major version,Ythe minor version, andZthe patch version. In this manual, we assume that the major version is always0, 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.
- 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
- Edit the string in the
VERSIONand set it to the new version. Push/merge this change tomain. - Go to GitHub and create a new release, either by going to the
release page and clicking on "Draft
a new release" or by directly following
this link.
- Click on "Choose a tag", enter the new version (e.g.,
v0.2.4, including thevprefix), and select "Create a new tag". - Click on "Generate release notes".
- Click on "Publish release".
- Click on "Choose a tag", enter the new version (e.g.,
- The new release is immediately usable and visible on the release page \o/
- To make sure people do not mistake the latest state of
mainas the latest release, we set the version in theVERSIONfile to a development version. The development version should be the latest released version, with the patch version incremented by one, and the-devsuffix added. For example, if you just releasedv0.3.0, the new development version should bev0.3.1-dev. If you just releasedv0.2.4, the new development version should bev0.2.5-dev.
Among other uses, smesh is the backend for the Julia package Smesh.jl. For this purpose, it is automatically built and distributed as a Julia JLL package. Therefore, after each release of smesh, you should also update the corresponding build recipe in the Yggdrasil repository:
- If not yet done, create a fork of the Yggdrasil repository, which contains all build recipes for registered JLL packages.
- Create a new branch in your Yggdrasil fork and modify the
build_tarballs.jlfile for smesh:- Change the existing version number in
build_tarballs.jlto the version you just released (e.g., here the existing smesh version isv0.1.0) - Get the commit hash of the current smesh release, e.g., by going to the latest release and then clicking on the short commit hash, then copying it from the browser URL.
- Change the existing commit hash in
build_tarballs.jlto the commit hash you just obtained (e.g., here the hash wasdb69bf884d10c52577aee6795202136cfcf77178)
- Change the existing version number in
- Commit and push the changes to your fork.
- Create a pull request from your fork's branch to Yggdrasil's
masterbranch and name it appropriately (e.g.,[smesh] update to version v0.2.4) - Wait for all tests in Yggdrasil to pass. If they don't, find the error and fix it.
- Wait for the Yggdrasil PR to be merged to
master. After an appropriate waiting period (1-2 business days), you can ask nicely in the#binarybuilderon the Julia Slack if someone could merge your PR. - Once the Yggdrasil CI has built the new artifacts from its updated
masterbranch, it will upload them to the smesh_jll.jl package repository and create a PR to Julia's general registry with the new version. Once all checks pass there and a grace period of 15 minutes has passed, the new release will be available.