Skip to main content

Multi-registry publishing automation. PyPI, npm, Docker, Homebrew, Maven, RubyGems, Cargo, NuGet, Packagist, plus seven git hosts. Fluent OOP, config-driven, OIDC-first.

Project description

simtabi-release-kit

CI PyPI Python License

Multi-registry publishing automation. One config file, one command, every registry your project needs.

pip install simtabi-release-kit
release-kit init
release-kit doctor            # green / amber / red per target
release-kit publish --apply   # dry-run is the default

What it does

  • Publishes to package registries: PyPI, npm (+ GitHub Packages, GitLab npm), Docker Hub, GHCR, GitLab Container Registry, AWS ECR, Google Artifact Registry, Azure Container Registry, Homebrew tap, Maven Central, RubyGems, crates.io, NuGet, Packagist.
  • Automates git hosts: GitHub.com, GitHub Enterprise (Cloud + Server), GitLab.com, GitLab Self-Managed, Bitbucket Cloud, Bitbucket Data Center, Gitea / Forgejo, Azure DevOps.
  • OIDC-first: prefers passwordless trusted publishing. Refuses to fall back to long-lived tokens without --allow-token-auth.
  • Dry-run by default: nothing publishes until --apply.
  • Pluggable: third parties register custom platforms via [project.entry-points."release_kit.platforms"] without forking.

Quick start

# 1. Install
pip install simtabi-release-kit

# 2. Scaffold a config + .env template
release-kit init

# 3. Verify your credentials and connectivity
release-kit doctor

# 4. Dry-run a publish to selected targets
release-kit publish --target pypi --target ghcr

# 5. For real
release-kit publish --target pypi --target ghcr --apply

Two artefacts in one repo

This repository ships:

  1. A reference playbook at docs/playbook/ — 33 markdown files covering every supported registry and git host, following an identical 8-section template. Read it standalone even if you never install the package.
  2. The Python automation package under src/release_kit/ — Typer CLI + config-driven runner + per-platform implementations.

Status

Version 0.1.0
Python ≥ 3.11
Platforms (playbook) 26 platforms documented
Platforms (code) 25 platforms registered (16 registries + 8 git hosts + 1 sub-class via inheritance)
Tests 158 passing, 76% coverage (gate 70%)
Type-check mypy --strict clean on 47 source files

Configuration

Three layers, highest wins:

  1. CLI flags (--target pypi --apply)
  2. Environment variables (loaded from .env in dev; from CI secret store in prod)
  3. JSON config (release.json, validated against the bundled schema)

Example release.json:

{
  "$schema": "./schema/release-kit.schema.json",
  "project": {
    "name": "my-project",
    "version_source": "pyproject.toml"
  },
  "targets": {
    "pypi":           { "enabled": true, "auth": "oidc" },
    "ghcr":           { "enabled": true, "auth": "oidc", "image": "ghcr.io/my-org/my-project" },
    "github_release": { "enabled": true, "draft": false, "generate_notes": true }
  },
  "policies": {
    "require_clean_git": true,
    "require_tag_match": true,
    "continue_on_error": false,
    "default_dry_run": true
  }
}

Full schema: docs/configuration.md. JSON Schema (machine-readable): src/release_kit/schema/release-kit.schema.json.

CLI surface

Command Purpose
release-kit init Scaffold release.json + .env-example in the current dir
release-kit doctor Per-target readiness check (green / amber / red)
release-kit publish [--target NAME ...] [--apply] Run the publish flow
release-kit bootstrap-repo [--apply] Apply topics + branch protection per config
release-kit verify [--target NAME ...] Run each target's verify step to confirm artifacts are live
release-kit rotate-tokens [--platform SLUG ...] [--list] Interactive token rotation helper
release-kit version Print version

Full reference: docs/cli.md.

Documentation

docs/playbook/ The standalone reference for every supported platform
docs/architecture.md How the package is laid out + extension points
docs/configuration.md Full JSON config schema
docs/cli.md Every command, every flag
docs/security.md Token handling, OIDC, rotation cadence
docs/workflows/ End-to-end how-tos (first publish, CI release, OIDC bootstrap)
docs/recipes/ Copy-pasteable example configs
docs/troubleshooting.md Symptom → cause → fix

Built by

Simtabi LLC · MIT license · contributions welcome.

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

simtabi_release_kit-0.3.0.tar.gz (135.6 kB view details)

Uploaded Source

Built Distribution

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

simtabi_release_kit-0.3.0-py3-none-any.whl (81.5 kB view details)

Uploaded Python 3

File details

Details for the file simtabi_release_kit-0.3.0.tar.gz.

File metadata

  • Download URL: simtabi_release_kit-0.3.0.tar.gz
  • Upload date:
  • Size: 135.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simtabi_release_kit-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6447597db9f1a097f5ec5de7602a6f835fecff2bb0dfe6e5c39178881bf4b1cb
MD5 1c93e6e83ce69264887663db45e6f27e
BLAKE2b-256 7374503d6d161d0f163eac3f9e57326e8c25912bcd8052eb73d8e89563a77870

See more details on using hashes here.

Provenance

The following attestation bundles were made for simtabi_release_kit-0.3.0.tar.gz:

Publisher: release.yml on simtabi/release-kit

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

File details

Details for the file simtabi_release_kit-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for simtabi_release_kit-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8880c6cc1b6ba9e23731ef92a18b0549881949baebc5af49fc51867343f2e7f8
MD5 395161982bd504056d88dae3dd6d89dc
BLAKE2b-256 d9a969688246583aaea4c76e3951b72556a95e3c77f7c28eb2674ea4bf7b8ba5

See more details on using hashes here.

Provenance

The following attestation bundles were made for simtabi_release_kit-0.3.0-py3-none-any.whl:

Publisher: release.yml on simtabi/release-kit

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

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