This document contains a process that should be completed for every Grin release.
- 1. Grin release
- 2. Grin-Wallet release
- 3. Update Brew Formulas
- 4. Update Snapcraft
- 5. Update Grin Website
- 6. Publish a Message on Grin-Forum
Replace in every Cargo.toml
file the version with the new release version.
[package]
...
version = "X.X.X"
Commit the files.
git tag vX.X.X
git push origin vX.X.X
This will trigger the CI and automatically do the new release.
On every submodule first then on the main package:
cargo publish
For example, on Grin v4.0.0, the uploading order for cargo publish
was:
util
keychain
core
store
chain
pool
p2p
api
servers
config
grin
Grin follows semantic versioning 2.0. Patches are released from the maintenance branch and as such do not need a new branch. Hence for patch only follow step 1.4.1.
If it's a major or minor release you'll need to create a new "maintenance" branch and update the current master branch.
e.g. if we just released Grin v4.0.0 we will need to create a new branch named current/v4.0.x
for patch on v4.0.0.
git checkout -b current/vX.X.X
git push --set-upstream origin current/vX.X.X
On the maintenance branch current/vX.X.X
, replace in every Cargo.toml
file the version with the correct version and alpha name.
[package]
...
version = "X.X.X-alpha.1"
On the master branch, replace in every Cargo.toml
file the version with the correct version and alpha name.
[package]
...
version = "X.X
e.g. This PR for the master branch (https://github.com/mimblewimble/grin/pull/3390.
Replace in every Cargo.toml
file the version with the new release version.
[package]
...
version = "X.X.X"
Commit the files.
git tag vX.X.X
git push origin vX.X.X
This will trigger the CI and automatically do the new release.
On every submodule first then on the main package:
cargo publish
Grin-Wallet follows semantic versioning 2.0. Patches are released from the maintenance branch and as such do not need a new branch. Hence for patch only follow step 1.4.1.
If it's a major or minor release you'll need to create a new "maintenance" branch and update the current master branch.
e.g. if we just released Grin-Wallet v4.0.0 we will need to create a new branch named current/v4.0.x
for patch on v4.0.0.
git checkout -b current/vX.X.X
git push --set-upstream origin current/vX.X.X
On the maintenance branch "current/vX.X.Xreplace in every
Cargo.toml` file the version with the correct version and alpha name.
[package]
...
version = "X.X.X-alpha.1"
On the master branch replace in every Cargo.toml
file the version with the correct version and alpha name.
[package]
...
version = "X.X
e.g. This PR for the master branch (https://github.com/mimblewimble/grin/pull/3390.
On macOS with homebrew installed:
brew bump-formula-pr grin --url=https://github.com/mimblewimble/grin/archive/vx.x.x.tar.gz
brew bump-formula-pr grin-wallet --url=https://github.com/mimblewimble/grin-wallet/archive/vx.x.x.tar.gz
Update the file snapcraft.yml
in mimblewimble/packaging
Example PR:
Then, in the same directory type:
snapcraft
...
snapcraft push --release=stable grin_vX.X.X_amd64.snap
Update mimblewimble/site download and index pages. Do not forget to update the checksums.
Examples PR:
Publish a new blog post on the website to notify about the new update such as this one: mimblewimble/site#202
Create a message on forum.grin.mw in the announcements category such as this one https://forum.grin.mw/t/grin-grin-wallet-4-0-0-released.