Skip to main content

releez

CI PyPI version Python 3.11+ License: MIT Coverage

releez is a CLI tool for managing semantic versioned releases. It automates version bumping, changelog generation, release PRs, and git tags — powered by git-cliff under the hood.

Full documentation at hotdog-werx.github.io/releez

uv tool install releez

Commands

releez release start           # bump version, update changelog, open PR
releez release preview         # print what would be released
releez release notes           # print unreleased changelog section
releez release tag             # create git tags after merging the release PR
releez version artifact        # compute semver/docker/pep440 versions for CI
releez changelog regenerate    # rebuild the full CHANGELOG from git history

Common flags: --bump auto|patch|minor|major, --base <branch>, --dry-run, --alias-versions none|major|minor.

For monorepo projects, add --project <name> (repeatable) or --all. For automation needing structured start outputs, pass --result-file <path> to releez release start to write one release result as JSON; use a single project when doing so.

Monorepo support

Configure multiple independently-versioned projects in your root pyproject.toml:

[tool.releez]
base-branch = "main"

[[tool.releez.projects]]
name = "core"
path = "packages/core"
tag-prefix = "core-"
changelog-path = "CHANGELOG.md"

[[tool.releez.projects]]
name = "ui"
path = "packages/ui"
tag-prefix = "ui-"
changelog-path = "CHANGELOG.md"

Each project gets its own changelog, release branch, PR, and tags (e.g. core-1.2.3, core-v1). releez auto-detects which projects have unreleased changes.

See the Monorepo Setup Guide for full configuration, change detection, uv workspace integration, and CI patterns.

Support branches

Support branches are long-lived maintenance lines for shipping hotfixes or backported features on older majors (e.g. support/1.x while 2.x development continues on the default branch).

Create a support branch with:

releez release support-branch 1            # single-repo → support/1.x
releez release support-branch 1 --project ui  # monorepo  → support/ui-1.x

Release from a support branch with the normal releez release start command — Releez detects the branch automatically and scopes versioning to the correct major line.

See the Support Branches guide for full details including --commit overrides, custom naming, and monorepo configuration.

Configuration

Precedence (highest first): CLI flags → RELEEZ_* env vars → releez.toml → pyproject.toml ([tool.releez]).

[tool.releez]
base-branch = "master"
git-remote = "origin"
alias-versions = "minor"

[tool.releez.hooks]
post-changelog = [
  ["uv", "version", "{version}"], # {version} = bare semver
  ["prettier", "--write", "{changelog}"],
]

Hooks run automatically after the changelog is updated. Template variables: {version} (bare semver), {project_version} (full tagged version, e.g. core-1.2.3), {changelog} (absolute path).

See the Settings reference and Hooks documentation for details.

GitHub Action

releez ships a composite GitHub Action. Pin it by tag — the matching CLI version is installed automatically.

Modes

Mode When What it does
start Manual dispatch / scheduled run Creates a release branch and optionally a PR
validate PR opened / updated on release/* Dry-runs the release, posts a preview comment
finalize Release PR merged Creates git tags, emits version outputs
version-artifact Any build Computes semver / docker / pep440 version strings

Validate a release PR

- uses: hotdog-werx/releez@v0
  with:
    mode: validate
    post-comment: 'true'

Start a release from a workflow

- uses: actions/checkout@v6
  with:
    fetch-depth: 0
    fetch-tags: true
- run: |
    git config user.name 'github-actions[bot]'
    git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
- id: releez
  uses: hotdog-werx/releez@v0
  with:
    mode: start
    project: core # omit for single-package repos

The job needs contents: write and pull-requests: write. The action uses github-token for git-cliff and PR creation; the checkout credential is used to push. For a custom token, pass it to both the checkout and the action. Install any tools required by configured post-changelog hooks before this step. release-branch and pull-request-url outputs are available when created. With dry-run: 'true', the release preview appears in the job summary.

Finalize and create a GitHub Release

- id: releez
  uses: hotdog-werx/releez@v0
  with:
    mode: finalize
    alias-versions: major

- uses: softprops/action-gh-release@v2
  with:
    tag_name: ${{ steps.releez.outputs.release-version }}
    body: ${{ steps.releez.outputs.release-notes }}

Artifact versions for a Docker build

- id: version
  uses: hotdog-werx/releez@v0
  with:
    mode: version-artifact
    is-full-release: ${{ github.event_name != 'pull_request' }}
    prerelease-number: ${{ github.event.pull_request.number }}

Key outputs: release-version, semver-versions, docker-versions, pep440-versions, semver-version, docker-version, pep440-version (singular = exact version only, no aliases), release-notes, project (monorepo), and start-mode release-branch / pull-request-url.

For the full input/output reference and workflow recipes see the Action Reference and Workflow Recipes.

GitHub recommendations

Prefer squash merging with "Pull request title" as the default commit message. This keeps your history aligned with semantic PR titles and works well with amannn/action-semantic-pull-request and git-cliff changelog generation.

Metadata

Release files for releez 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for releez 1.1.1
File Size Uploaded
releez-1.1.1.tar.gz 44.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for releez 1.1.1
File Interpreter ABI Platform
releez-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 103.2 kB

Release files / releez-1.1.1.tar.gz

Download URL releez-1.1.1.tar.gz
Size 44.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a5a55229390fa9b913bc0a7694dedf9749cb210b2b38b3fce3dd9b2428f0fa33
BLAKE2b-256 checksum
How to use checksums
161b45a7af5e46be61f632c85a7fc3281c658476c10d18c16d0416e8adee288a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / releez-1.1.1-py3-none-any.whl

Download URL releez-1.1.1-py3-none-any.whl
Size 58.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d3b79d078914420a59fedb828e47ef938aaf32c808dbe77f7fe4109ef9b73166
BLAKE2b-256 checksum
How to use checksums
cb7357955d43fba75140f05be53f00796601b9d2260a719d3dc7527a30258985
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page