product:release

Release a product: bump version, create Git tag, publish GitHub Release, publish to PyPI, and push a Docker image to Docker Hub.


Table of contents

  1. Usage
  2. Examples
  3. Pipeline
    1. Feature pinning guard
  4. Requirements
  5. See also

Usage

splent product:release [<version>] [--product <name>]
Argument / Option Description
<version> Optional. Version to release (e.g. v1.2.1). If omitted, the semver wizard runs.
--product Override SPLENT_APP.

Examples

Interactive (recommended):

splent product:release
  Fetching current version from GitHub...
  Current version: v1.0.3

  Bump type:
    [1] patch  v1.0.4   bug fixes, no new features
    [2] minor  v1.1.0   new features, backward compatible
    [3] major  v2.0.0   breaking changes
    [4] cancel

  Choice: 1

  Will release as v1.0.4
  Proceed? [y/N]: y

  Releasing my_first_app v1.0.4

  version  1.0.4 written to pyproject.toml
  commit   changes committed and pushed
  tag      v1.0.4 created
  tag      v1.0.4 pushed to origin
  github   release created: https://github.com/...
  pypi     building package...
  pypi     upload complete
  docker   logging into Docker Hub...
  docker   building image...
  docker   pushing images...
  docker   push complete

  my_first_app v1.0.4 released.

Explicit version:

splent product:release v1.0.4

Override product:

splent product:release v1.0.4 --product other_app

Pipeline

  1. Validates environment credentials (PyPI + Docker Hub).
  2. Guards: all features must be pinned (no editable features allowed).
  3. Bumps the version in <product>/pyproject.toml.
  4. Stages, commits, and pushes all pending changes to main.
  5. Creates and pushes a Git tag (v<version>).
  6. Creates a GitHub Release.
  7. Cleans build artifacts (__pycache__, dist/, build/, *.egg-info).
  8. Builds and uploads the package to PyPI.
  9. Builds and pushes Docker images to Docker Hub:
    • <user>/<product>:<version>
    • <user>/<product>:latest

Feature pinning guard

A product release must be reproducible. If any feature is editable (no version pinned), the command refuses to proceed and lists the offending features:

  Cannot release: the following features are editable (no version pinned):

    - splent-io/splent_feature_notes

  A product release must be reproducible. Pin all features first:
    splent feature:release <feature>
    splent feature:attach <feature> <version>

Requirements

Variable Required Description
TWINE_USERNAME / PYPI_USERNAME Yes PyPI authentication
TWINE_PASSWORD / PYPI_PASSWORD Yes PyPI API token
DOCKERHUB_USERNAME Yes Docker Hub authentication
DOCKERHUB_PASSWORD Yes Docker Hub password
GITHUB_TOKEN Optional GitHub Release creation + semver wizard tag fetch

Verify credentials before releasing:

splent check:github
splent check:pypi

See also


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es