name: Publish Release on: push: tags: - 'v*' jobs: publish: runs-on: docker steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install git-cliff run: | GIT_CLIFF_VERSION="2.13.0" URL="https://github.com/orhun/git-cliff/releases/download/v${GIT_CLIFF_VERSION}/git-cliff-${GIT_CLIFF_VERSION}-x86_64-unknown-linux-gnu.tar.gz" TMPDIR="$(mktemp -d)" curl -sL "$URL" | tar xz -C "$TMPDIR" mkdir -p "$HOME/.local/bin" mv "$TMPDIR/git-cliff-${GIT_CLIFF_VERSION}/git-cliff" "$HOME/.local/bin/git-cliff" chmod +x "$HOME/.local/bin/git-cliff" echo "$HOME/.local/bin" >> "$GITHUB_PATH" "$HOME/.local/bin/git-cliff" --version - name: Install build tools run: | python3 -m pip install --break-system-packages build twine requests python-dotenv click - name: Validate PYPI_TOKEN run: | if [ -z "${{ secrets.PYPI_TOKEN }}" ]; then echo "::warning::PYPI_TOKEN is not set — package will be built but not published to PyPI." fi - name: Build and publish release env: REPO_TOKEN: ${{ secrets.REPO_TOKEN }} PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} PYTHONPATH: src run: | python3 scripts/publish.py \ "${{ github.ref_name }}" \ "${{ github.repository }}" - name: Notify on failure if: failure() env: REPO_TOKEN: ${{ secrets.REPO_TOKEN }} PYTHONPATH: src run: | python3 scripts/notify_failure.py \ --repo "${{ github.repository }}" \ --run-id "${{ github.run_id }}" \ --workflow "publish" \ --commit "${{ github.sha }}"