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

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 in v0.2) 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.1.0.tar.gz (127.4 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.1.0-py3-none-any.whl (75.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: simtabi_release_kit-0.1.0.tar.gz
  • Upload date:
  • Size: 127.4 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.1.0.tar.gz
Algorithm Hash digest
SHA256 372a433722493545fce1d2b344b85f89b48ac22cae3131df128df4c7ef64bdd5
MD5 83ae4d2e44a788089dca4185bf716f05
BLAKE2b-256 891927d51279426551f04a3c95e120fb31b3af4b7a8e6b40db61d596c3b30b35

See more details on using hashes here.

Provenance

The following attestation bundles were made for simtabi_release_kit-0.1.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.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for simtabi_release_kit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aafac34d1c77a2457fc307eb7216a9313a8fba316a28ba80a425c4a0036f94fa
MD5 d5cc445180a419e4e37a145d447c61cd
BLAKE2b-256 5e8a1d24ef9d32f71f500c78324e5bc38ee8a04109ff63f2e25761b15dc98ba0

See more details on using hashes here.

Provenance

The following attestation bundles were made for simtabi_release_kit-0.1.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