Add release script (#10305)

Copied over from `uv`
This commit is contained in:
Zanie Blue 2024-03-11 16:26:21 -05:00 committed by GitHub
parent 8d73866f70
commit 06284c3700
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 89 additions and 5 deletions

View File

@ -329,13 +329,13 @@ even patch releases may contain [non-backwards-compatible changes](https://semve
### Creating a new release ### Creating a new release
We use an experimental in-house tool for managing releases. 1. Install `uv`: `curl -LsSf https://astral.sh/uv/install.sh | sh`
1. Run `./scripts/release/bump.sh`; this command will:
1. Install `rooster`: `pip install git+https://github.com/zanieb/rooster@main` - Generate a temporary virtual environment with `rooster`
1. Run `rooster release`; this command will:
- Generate a changelog entry in `CHANGELOG.md` - Generate a changelog entry in `CHANGELOG.md`
- Update versions in `pyproject.toml` and `Cargo.toml` - Update versions in `pyproject.toml` and `Cargo.toml`
- Update references to versions in the `README.md` and documentation - Update references to versions in the `README.md` and documentation
- Display contributors for the release
1. The changelog should then be editorialized for consistency 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 - 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 - Changes should be edited to be user-facing descriptions, avoiding internal details
@ -359,7 +359,7 @@ We use an experimental in-house tool for managing releases.
1. Open the draft release in the GitHub release section 1. Open the draft release in the GitHub release section
1. Copy the changelog for the release into the GitHub release 1. Copy the changelog for the release into the GitHub release
- See previous releases for formatting of section headers - See previous releases for formatting of section headers
1. Generate the contributor list with `rooster contributors` and add to the release notes 1. Append the contributors from the `bump.sh` script
1. If needed, [update the schemastore](https://github.com/astral-sh/ruff/blob/main/scripts/update_schemastore.py). 1. If needed, [update the schemastore](https://github.com/astral-sh/ruff/blob/main/scripts/update_schemastore.py).
1. One can determine if an update is needed when 1. One can determine if an update is needed when
`git diff old-version-tag new-version-tag -- ruff.schema.json` returns a non-empty diff. `git diff old-version-tag new-version-tag -- ruff.schema.json` returns a non-empty diff.

27
scripts/release/bump.sh Executable file
View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Prepare for a release
#
# All additional options are passed to `rooster`
set -eu
script_root="$(realpath "$(dirname "$0")")"
project_root="$(dirname "$(dirname "$script_root")")"
cd "$script_root"
echo "Setting up a temporary environment..."
uv venv
source ".venv/bin/activate"
uv pip install -r requirements.txt
echo "Updating metadata with rooster..."
cd "$project_root"
rooster release "$@"
echo "Updating lockfile..."
cargo check
echo "Generating contributors list..."
echo ""
echo ""
rooster contributors --quiet

View File

@ -0,0 +1 @@
rooster-blue

View File

@ -0,0 +1,56 @@
# This file was autogenerated by uv v0.1.1 via the following command:
# uv pip compile scripts/release/requirements.in -o scripts/release/requirements.txt --upgrade
annotated-types==0.6.0
# via pydantic
anyio==4.3.0
# via httpx
certifi==2024.2.2
# via
# httpcore
# httpx
cffi==1.16.0
# via pygit2
click==8.1.7
# via typer
h11==0.14.0
# via httpcore
hishel==0.0.12
# via rooster-blue
httpcore==1.0.4
# via httpx
httpx==0.25.2
# via
# hishel
# rooster-blue
idna==3.6
# via
# anyio
# httpx
marko==2.0.3
# via rooster-blue
packaging==23.2
# via rooster-blue
pycparser==2.21
# via cffi
pydantic==2.6.1
# via rooster-blue
pydantic-core==2.16.2
# via pydantic
pygit2==1.14.1
# via rooster-blue
rooster-blue==0.0.2
setuptools==69.1.0
# via pygit2
sniffio==1.3.0
# via
# anyio
# httpx
tqdm==4.66.2
# via rooster-blue
typer==0.9.0
# via rooster-blue
typing-extensions==4.9.0
# via
# pydantic
# pydantic-core
# typer