1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2024-12-07 11:13:17 +02:00
ripgrep/RELEASE-CHECKLIST.md
2023-11-26 15:25:23 -05:00

2.9 KiB

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.
  • Update date in crates/core/flags/doc/template.rg.1.
  • 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.
  • Run cargo package and ensure it succeeds.
  • Push changes to GitHub, NOT including the tag. (But do not publish a new version of ripgrep to crates.io yet.)
  • Once CI for master finishes successfully, push the version tag. (Trying to do this in one step seems to result in GitHub Actions not seeing the tag push and thus not running the release workflow.)
  • 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 git checkout {VERSION} && ci/build-and-publish-m2 {VERSION} on a macOS system with Apple silicon.
  • 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.