Skip to content

Release: Publish to PyPi #1

Release: Publish to PyPi

Release: Publish to PyPi #1

# Builds and publishes the package to PyPI from a release branch.
# Creates a merge-back PR to sync release changes to main.
name: "Release: Publish to PyPi"
on:
workflow_dispatch:
inputs:
version:
description: 'Version to publish (e.g., 0.3.0)'
required: true
type: string
permissions:
contents: write
pull-requests: write
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: release/v${{ inputs.version }}
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
version: "latest"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build package
run: uv build
- name: Publish to PyPI
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
run: uv publish
- name: Create merge-back PR
env:
GH_TOKEN: ${{ secrets.RELEASE_PAT }}
run: |
gh pr create \
--base main \
--head "release/v${{ inputs.version }}" \
--title "chore: merge release v${{ inputs.version }} to main" \
--body "Syncs version bump and CHANGELOG from release v${{ inputs.version }} to main."