summaryrefslogtreecommitdiff
path: root/RELEASE.md
blob: f17623a5e3fb9cf6a3183839355365b0f3b8ee9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
---
title: Release process for Subplot
...

The subplot project consists of serveral crates, any step which refers to the
`Cargo.toml` or `Cargo.lock` files should be repeated for all crates. Currently
the set of crates to consider for release is:

- `subplotlib-derive`
- `subplotlib`
- `subplot`

When determining if a new version of a crate is required, use `git log` with
appropriate filters.

Before any release of Subplot, it is appropriate to ensure that versions of
dependencies have been updated where needed. You may want to do this on a
different branch, or as part of the release branch.

Follow these steps to make a release of Subplot

1. Create a branch on which to do the release (e.g. call it `release`)
2. Ensure dependencies are up-to-date, for example, `cargo update` and its
   associated tool `cargo outdated` will be of help.
3. Update `NEWS.md` as appropriate
4. Update the version numbers everywhere they need to be updated. Use
   [semantic versioning](https://semver.org/) appropriately. You may use
   the [bumper](https://bumper.liw.fi/) tool to do this.
   - `NEWS.md`
   - `Cargo.toml`
   - `debian/changelog`
5. Ensure everything is appropriately committed with good messages.
6. Run `cargo publish --dry-run` for each crate as needed, to ensure that
   we will be okay to publish the crates later.
7. Push the branch to Gitlab and create the merge request.
8. Have someone review, approve (assuming green CI), and merge the release
   branch.
9. Create a signed, annotated, Git tag `vX.Y.Z` for version `X.Y.Z` of Subplot.
10. Push the tag to Gitlab and to `git.liw.fi`
11. Publish any changed crates to `crates.io` with `cargo publish` in the
    relevant directories.
12. Announce our jubilation to the world.