From 06284c3700a4a01d89596a96e2e2b1a8751c2960 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Mon, 11 Mar 2024 16:26:21 -0500 Subject: [PATCH] Add release script (#10305) Copied over from `uv` --- CONTRIBUTING.md | 10 +++--- scripts/release/bump.sh | 27 +++++++++++++++ scripts/release/requirements.in | 1 + scripts/release/requirements.txt | 56 ++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+), 5 deletions(-) create mode 100755 scripts/release/bump.sh create mode 100644 scripts/release/requirements.in create mode 100644 scripts/release/requirements.txt diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bebe318c49..7a7b667a00 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 @@ -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. diff --git a/scripts/release/bump.sh b/scripts/release/bump.sh new file mode 100755 index 0000000000..c992768e10 --- /dev/null +++ b/scripts/release/bump.sh @@ -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 diff --git a/scripts/release/requirements.in b/scripts/release/requirements.in new file mode 100644 index 0000000000..e47c37092d --- /dev/null +++ b/scripts/release/requirements.in @@ -0,0 +1 @@ +rooster-blue diff --git a/scripts/release/requirements.txt b/scripts/release/requirements.txt new file mode 100644 index 0000000000..2df4e3dce1 --- /dev/null +++ b/scripts/release/requirements.txt @@ -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