# Publish both distributions to PyPI on a version tag. # # Tags are the trigger rather than pushes to main: a release is a decision, and # a version already on PyPI cannot be replaced. name: Publish on: push: tags: - "v*" jobs: publish: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.10" - name: Set up uv uses: astral-sh/setup-uv@v7 - name: The tag is what the packages say they are # Publishing 0.2.0 from a v0.3.0 tag is the kind of thing nobody # notices until an install pulls the wrong one. run: | version="${GITHUB_REF_NAME#v}" for project in backend worker; do declared=$(uv version --short --directory "$project") [ "$declared" = "$version" ] || { echo "$project declares $declared, tag says $version" >&2 exit 1 } done - run: uv build --all-packages --out-dir dist - name: Both wheels install and run run: | uv run --no-project --with dist/fluksio_worker-*.whl fluksio-worker --help uv run --no-project --with dist/fluksio-*.whl --with dist/fluksio_worker-*.whl \ fluksio --version - name: Publish env: UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }} run: uv publish dist/*