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