Skip to main content

CLI tool for helping to manage release processes.

Project description

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.

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.

Configuration

Precedence (highest first): CLI flags → RELEEZ_* env vars → releez.tomlpyproject.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
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'

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, release-notes, project (monorepo).

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.

Project details


Download files

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

Source Distribution

releez-0.3.2.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

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

releez-0.3.2-py3-none-any.whl (37.7 kB view details)

Uploaded Python 3

File details

Details for the file releez-0.3.2.tar.gz.

File metadata

  • Download URL: releez-0.3.2.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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}

File hashes

Hashes for releez-0.3.2.tar.gz
Algorithm Hash digest
SHA256 89ac26b7b25a29fe15ad8b55a25e05be1e4c158cc8f44e0d72aad41523d8587f
MD5 24a1e2c6c87cb1cf8426be36b08e920e
BLAKE2b-256 f56596669cbb1bfe007ead0f2581baa13d18c7afb17d6c8ea87f2ee885ef7d3a

See more details on using hashes here.

File details

Details for the file releez-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: releez-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 37.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","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}

File hashes

Hashes for releez-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a95c9f1127c640aa8a116f040e02f1dfcc4e73a4cd28067d857805dbbda74309
MD5 da581da90fe6bd45acb74505289c813a
BLAKE2b-256 c520e81a552f0a934eaa02081133270d0f244ed8db5ac83c3bee1d634fc2d99c

See more details on using hashes here.

Supported by

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