/ .github / workflows / release.yml
release.yml
 1  name: Release to PyPI
 2  
 3  on:
 4    push:
 5      tags:
 6        - 'v*'
 7    workflow_dispatch:
 8  
 9  jobs:
10    build:
11      runs-on: ubuntu-latest
12      steps:
13        - uses: actions/checkout@v4
14  
15        - name: Install uv
16          uses: astral-sh/setup-uv@v4
17  
18        - name: Set up Python
19          run: uv python install 3.13
20  
21        - name: Install dependencies
22          run: uv sync --all-extras
23  
24        - name: Build package
25          run: uv build
26  
27        - name: Upload dist artifacts
28          uses: actions/upload-artifact@v4
29          with:
30            name: dist
31            path: dist/
32  
33    publish:
34      needs: build
35      runs-on: ubuntu-latest
36      environment: pypi
37      permissions:
38        id-token: write
39      steps:
40        - name: Download dist artifacts
41          uses: actions/download-artifact@v4
42          with:
43            name: dist
44            path: dist/
45  
46        - name: Publish to PyPI
47          uses: pypa/gh-action-pypi-publish@release/v1