name: release on: workflow_dispatch: push: tags: - "v*" permissions: contents: write jobs: package: runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python 3.13 uses: actions/setup-python@v5 with: python-version: "3.13" - name: Install uv uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 with: enable-cache: true - name: Build release package run: make release-package - name: Upload artifact uses: actions/upload-artifact@v4 with: name: flow-python-release path: | dist/flow-*-python.tar.gz dist/flow-*-python.tar.gz.sha256 if-no-files-found: error - name: Publish release assets if: startsWith(github.ref, 'refs/tags/') env: GH_TOKEN: ${{ github.token }} run: | set -euo pipefail TAG="${GITHUB_REF_NAME}" if gh release view "$TAG" >/dev/null 2>&1; then gh release upload "$TAG" dist/flow-*-python.tar.gz dist/flow-*-python.tar.gz.sha256 --clobber else gh release create "$TAG" dist/flow-*-python.tar.gz dist/flow-*-python.tar.gz.sha256 --title "$TAG" --generate-notes fi