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.2.0.tar.gz (132.7 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.2.0-py3-none-any.whl (78.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: simtabi_release_kit-0.2.0.tar.gz
  • Upload date:
  • Size: 132.7 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.2.0.tar.gz
Algorithm Hash digest
SHA256 f390509d75b4a3d135b3644bea5bd9c9214b1bf170fa47bc3fcb7b375caf6351
MD5 5889ff4c8a9f8f9a82c71330a43e81a8
BLAKE2b-256 510f920e76e4957db25e4a59c177fbbdd623ee6bb31716ec54beec70e083af0d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for simtabi_release_kit-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 520ad75d04ca059e6e504e8dff28f13b008dc877050941a3745cdccc74251ce3
MD5 b4ecd68cb82cda134cef923b3ac64618
BLAKE2b-256 e5ac6f14483a463a8d555353568ac754270cf1d46d54aae71fd9a966787d1523

See more details on using hashes here.

Provenance

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