mit einem Klick
mit einem Klick
| name | release |
| description | Release new versions of changed packages |
Release new versions of changed packages.
This project uses release-plz for automated releases. Version is determined by conventional commits (fix: → patch, feat: → minor, feat!: → major).
Each package has its own version and changelog. release-plz opens a PR only for packages with changes since their last release. s2-cli and s2-lite are in the same version_group (released together). s2-api and s2-common are library packages for internal use (published to crates.io but no GitHub releases).
Tags are per-package: s2-cli-v{version}, s2-lite-v{version}, s2-api-v{version}, s2-common-v{version}.
/release
Find the release PR
gh pr list --label release --state open
Identify which packages are being released
Cargo.toml files are modified in the PR:
gh pr diff <PR_NUMBER> --name-only
cli/Cargo.toml, lite/Cargo.toml, api/Cargo.toml, common/Cargo.tomlFor each package being released, verify its changelog
gh pr diff <PR_NUMBER>
git fetch --tags
# Example for s2-cli (substitute the package name as needed):
git log $(git tag -l 's2-cli-v*' --sort=-v:refname | head -1)..origin/main --oneline
feat:, fix:, docs:, etc.) should be includedchore: may be excluded (expected)If discrepancies found
release-crates is still running from a prior release. release-plz triggers on pushes to main, while release-crates triggers when a PR with the release label is merged. If a previous release PR was just merged, release-crates may still be running and hasn't created tags yet. If release-plz runs before those tags exist, the PR will have stale changelogs with duplicate entries from the previous release.
gh run list --workflow=release-crates.yml --limit 1
gh run watch <RUN_ID> --exit-status
gh workflow run release-plz.yml
gh run list --workflow=release-plz.yml --limit 1
gh run watch <RUN_ID> --exit-status
Dry run before merging (only for packages being released)
# Run only for packages with version bumps in the PR, e.g.:
cargo publish -p <package-name> --dry-run
If changelog is correct: Merge the PR
gh pr merge <PR_NUMBER> --squash
gh workflow run release-plz.yml
Wait for the PR to be created, then verify and merge.
gh run list --workflow=release-plz.ymlrelease-crates.yml publishes to crates.io and creates per-package git tagss2-cli-v* or s2-lite-v* trigger release-cli.yml (builds binaries, Docker images, updates Homebrew)Cargo.toml in the PR before merging