summaryrefslogtreecommitdiffstats
path: root/RELEASE-CHECKLIST.md
blob: e287860c16db3cd748011bda242155e1575f4f9d (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
43
44
45
46
47
48
49
50
51
Release Checklist
-----------------
* Ensure local `master` is up to date with respect to `origin/master`.
* Run `cargo update` and review dependency updates. Commit updated
  `Cargo.lock`.
* Run `cargo outdated` and review semver incompatible updates. Unless there is
  a strong motivation otherwise, review and update every dependency. Also
  run `--aggressive`, but don't update to crates that are still in beta.
* Review changes for every crate in `crates` since the last ripgrep release.
  If the set of changes is non-empty, issue a new release for that crate. Check
  crates in the following order. After updating a crate, ensure minimal
  versions are updated as appropriate in dependents. If an update is required,
  run `cargo-up --no-push crates/{CRATE}/Cargo.toml`.
    * crates/globset
    * crates/ignore
    * crates/cli
    * crates/matcher
    * crates/regex
    * crates/pcre2
    * crates/searcher
    * crates/printer
    * crates/grep (bump minimal versions as necessary)
    * crates/core (do **not** bump version, but update dependencies as needed)
* Update the CHANGELOG as appropriate.
* Edit the `Cargo.toml` to set the new ripgrep version. Run
  `cargo update -p ripgrep` so that the `Cargo.lock` is updated. Commit the
  changes and create a new signed tag. Alternatively, use
  `cargo-up --no-push --no-release Cargo.toml {VERSION}` to automate this.
* Wait for CI to finish creating the release. If the release build fails, then
  delete the tag from GitHub, make fixes, re-tag, delete the release and push.
* Copy the relevant section of the CHANGELOG to the tagged release notes.
  Include this blurb describing what ripgrep is:
  > In case you haven't heard of it before, ripgrep is a line-oriented search
  > tool that recursively searches the current directory for a regex pattern.
  > By default, ripgrep will respect gitignore rules and automatically skip
  > hidden files/directories and binary files.
* Run `ci/build-deb` locally and manually upload the deb package to the
  release.
* Run `cargo publish`.
* Run `ci/sha256-releases {VERSION} >> pkg/brew/ripgrep-bin.rb`. Then edit
  `pkg/brew/ripgrep-bin.rb` to update the version number and sha256 hashes.
  Remove extraneous stuff added by `ci/sha256-releases`. Commit changes.
* Add TBD section to the top of the CHANGELOG:
  ```
  TBD
  ===
  Unreleased changes. Release notes have not yet been written.
  ```

Note that
[`cargo-up` can be found in BurntSushi's dotfiles](https://github.com/BurntSushi/dotfiles/blob/master/bin/cargo-up).