Skip to content

Commit

Permalink
Add release script (#10305)
Browse files Browse the repository at this point in the history
Copied over from `uv`
  • Loading branch information
zanieb committed Mar 11, 2024
1 parent 8d73866 commit 06284c3
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 5 deletions.
10 changes: 5 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -329,13 +329,13 @@ even patch releases may contain [non-backwards-compatible changes](https://semve

### Creating a new release

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:
1. Install `uv`: `curl -LsSf https://astral.sh/uv/install.sh | sh`
1. Run `./scripts/release/bump.sh`; this command will:
- Generate a temporary virtual environment with `rooster`
- 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
- Display contributors for the release
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
Expand All @@ -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. 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. 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. 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.
Expand Down
27 changes: 27 additions & 0 deletions scripts/release/bump.sh
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions scripts/release/requirements.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rooster-blue
56 changes: 56 additions & 0 deletions scripts/release/requirements.txt
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 06284c3

Please sign in to comment.