Skip to content

Publish to PyPI

Publish to PyPI #6

Workflow file for this run

name: Publish to PyPI
on:
push:
tags: ["v*"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Check tag-version consistency
env:
TAG_NAME: ${{ github.ref_name }}
run: python scripts/check_tag_version.py --tag "$TAG_NAME"
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: "22"
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Build frontend
run: npm ci && npm run build
working-directory: frontend
- uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
with:
enable-cache: true
- name: Build package
run: uv build
- name: Verify wheel contents
run: python scripts/verify_wheel.py
- name: Check distribution metadata
run: uvx --from twine twine check dist/*
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: dist
path: dist/
publish:
needs: build
runs-on: ubuntu-latest
environment: pypi
permissions:
id-token: write
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: dist
path: dist/
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
packages-dir: dist/