Skip to main content

scriv-release

PyPI Python versions CI License

Changesets-style release automation on top of scriv.

scriv already manages per-PR changelog fragments. scriv-release adds the missing pieces for fully automated releases:

  1. A policy for mapping changelog categories to semver bump levels.
  2. Orchestration commands (bump-level, next-version, collect, tag) that wrap scriv and a configurable version provider.
  3. A GitHub Action that opens a "Changelog Preview" PR when fragments are pending, and tags a release once that PR is merged — the same flow popularized by Changesets in the JS ecosystem.

Quickstart

pip install "scriv-release[bump-my-version]"
# pyproject.toml
[tool.scriv-release]
version_provider = "bump-my-version"

In your repo's .github/workflows/release.yml:

on:
  push:
    branches: [main]

permissions: {}

jobs:
  release:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
          persist-credentials: false

      - uses: whitphx/scriv-release@v0.4.0
        with:
          client-id: ${{ vars.RELEASE_APP_CLIENT_ID }}
          app-private-key: ${{ secrets.RELEASE_APP_KEY }}

RELEASE_APP_CLIENT_ID and RELEASE_APP_KEY come from a GitHub App that you own. The action mints a short-lived installation token from the App so the tag-push it does at release time can trigger downstream workflows (the default GITHUB_TOKEN cannot — by design, to avoid recursion). To skip the manual App-creation flow, open

https://whitphx.github.io/scriv-release/install-app/

and click Create on your personal account (or fill the org name). GitHub's confirmation page is pre-populated with the recommended permissions (contents: write, pull_requests: write); submit, and the App is registered under your account. The page then walks you through generating a key, installing the App on the repo, and setting the secrets. See docs/token-setup.md for the longer explanation and a manual fallback.

For end-to-end onboarding, see docs/quickstart.md.

How it works

Two phases, branched on whether changelog fragments are present on HEAD:

  • Fragments presentscriv collect into a scriv-release-preview branch and open/update a "Changelog Preview" PR.
  • No fragments on HEAD, but fragments on HEAD~1 → that means the preview PR was just merged. Determine the bump level from HEAD~1's fragments, tag the release, push the tag.

This is the same file-presence-based detection Changesets uses, so it survives squash, rebase, and merge commits alike.

Status

Early scaffold. Public API and config keys may shift before 1.0.

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scriv_release-0.7.0.tar.gz (145.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scriv_release-0.7.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file scriv_release-0.7.0.tar.gz.

File metadata

  • Download URL: scriv_release-0.7.0.tar.gz
  • Upload date:
  • Size: 145.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for scriv_release-0.7.0.tar.gz
Algorithm Hash digest
SHA256 4ecd94dc74d457c1166d14ec6593954aadcab3ef6ac748d34ed3d0eac1a060f6
MD5 22c1b0993626a018677e64147d9fa91e
BLAKE2b-256 7880ae2514780b1229d802d938152e9ec737a9cad6323d2d1650f4cdffb34d35

See more details on using hashes here.

Provenance

The following attestation bundles were made for scriv_release-0.7.0.tar.gz:

Publisher: publish.yml on whitphx/scriv-release

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scriv_release-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: scriv_release-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for scriv_release-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80147d9bcc8e18675969be39144d02e0d5147966bfac6604c7671c179431d472
MD5 001904b0ad91de4fb3ba9a0eb436d3af
BLAKE2b-256 4245c0518d6c9715efc81c7c44504fc4ff4e847d32af537513346df1381706a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for scriv_release-0.7.0-py3-none-any.whl:

Publisher: publish.yml on whitphx/scriv-release

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page