diff --git a/.github/release.yml b/.github/release.yml deleted file mode 100644 index 5ae908bbe3..0000000000 --- a/.github/release.yml +++ /dev/null @@ -1,29 +0,0 @@ -# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes#configuring-automatically-generated-release-notes -changelog: - exclude: - labels: - - internal - - documentation - categories: - - title: Breaking Changes - labels: - - breaking - - title: Rules - labels: - - rule - - title: Settings - labels: - - configuration - - cli - - title: Bug Fixes - labels: - - bug - - title: Formatter - labels: - - formatter - - title: Preview - labels: - - preview - - title: Other Changes - labels: - - "*" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 39f7cfc15f..6f940ce73b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -315,9 +315,18 @@ even patch releases may contain [non-backwards-compatible changes](https://semve ### Creating a new release -1. Update the version with `rg 0.0.269 --files-with-matches | xargs sed -i 's/0.0.269/0.0.270/g'` -1. Update `BREAKING_CHANGES.md` -1. Create a PR with the version and `BREAKING_CHANGES.md` updated +We use an experimental in-house tool for managing releases. + +1. Install `rooster`: `pip install git+https://github.com/zanieb/rooster@main` +1. Run `rooster release`; this command will: + - Generate a changelog entry in `CHANGELOG.md` + - Update versions in `pyproject.toml` and `Cargo.toml` + - Update references to versions in the `README.md` and documentation +1. The changelog should then be editorialized for consistency + - Often labels will be missing from pull requests they will need to be manually organized into the proper section + - Changes should be edited to be user-facing descriptions, avoiding internal details +1. Highlight any breaking changes in `BREAKING_CHANGES.md` +1. Create a pull request with the changelog and version updates 1. Merge the PR 1. Run the release workflow with the version number (without starting `v`) as input. Make sure main has your merged PR as last commit @@ -330,7 +339,11 @@ even patch releases may contain [non-backwards-compatible changes](https://semve 1. Attach artifacts to draft GitHub release 1. Trigger downstream repositories. This can fail non-catastrophically, as we can run any downstream jobs manually if needed. -1. Create release notes in GitHub UI and promote from draft. +1. Publish the GitHub release + 1. Open the draft release in the GitHub release section + 1. Copy the changelog for the release into the GitHub release + - See previous releases for formatting of section headers + 1. Generate the contributor list with `rooster contributors` and add to the release notes 1. If needed, [update the schemastore](https://github.com/charliermarsh/ruff/blob/main/scripts/update_schemastore.py) 1. If needed, update the `ruff-lsp` and `ruff-vscode` repositories. diff --git a/pyproject.toml b/pyproject.toml index 7fb6358ce8..1c717c9e9b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -69,3 +69,32 @@ force-exclude = ''' | crates/ruff_python_formatter/resources )/ ''' + +[tool.rooster] +major_labels = [] # Ruff never uses the major version number +minor_labels = ["breaking"] # Bump the minor version on breaking changes + +changelog_ignore_labels = ["internal"] + +changelog_sections.breaking = "Breaking changes" +changelog_sections.preview = "Preview features" +changelog_sections.rule = "Rule changes" +changelog_sections.formatter = "Formatter" +changelog_sections.cli = "CLI" +changelog_sections.configuration = "Configuration" +changelog_sections.bug = "Bug fixes" +changelog_sections.__unknown__ = "Other changes" + +# We exclude contributors from the CHANGELOG file +# Generate separately with `rooster contributors` for the GitHub release page +changelog_contributors = false + +version_files = [ + "README.md", + "docs/integrations.md", + "crates/flake8_to_ruff/Cargo.toml", + "crates/ruff_cli/Cargo.toml", + "crates/ruff_linter/Cargo.toml", + "crates/ruff_shrinking/Cargo.toml", + "scripts/benchmarks/pyproject.toml", +]