Release/0.13.0 (#13) #10
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - 'v*.*.*' | |
| jobs: | |
| wait-for-tests: | |
| name: Wait for Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Wait for Tests workflow to pass | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| echo "Waiting for Tests workflow on commit ${{ github.sha }}..." | |
| for i in $(seq 1 60); do | |
| result=$(gh api repos/${{ github.repository }}/commits/${{ github.sha }}/check-runs \ | |
| --jq '.check_runs[] | select(.name | test("Ubuntu|MacOS|Windows")) | .conclusion' 2>/dev/null || true) | |
| if echo "$result" | grep -q "failure"; then | |
| echo "Tests failed — aborting release." | |
| exit 1 | |
| fi | |
| total=$(echo "$result" | wc -l | tr -d ' ') | |
| passed=$(echo "$result" | grep -c "success" || true) | |
| if [ "$total" -gt 0 ] && [ "$total" -eq "$passed" ]; then | |
| echo "All $total test jobs passed." | |
| exit 0 | |
| fi | |
| echo "Attempt $i: $passed/$total jobs passed so far, waiting 30s..." | |
| sleep 30 | |
| done | |
| echo "Timed out waiting for Tests workflow." | |
| exit 1 | |
| release: | |
| name: Release | |
| needs: wait-for-tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install Poetry | |
| run: | | |
| curl -sSL https://install.python-poetry.org | python - -y | |
| - name: Update PATH | |
| run: echo "$HOME/.local/bin" >> $GITHUB_PATH | |
| - name: Build project for distribution | |
| run: poetry build | |
| - name: Check Version | |
| id: check-version | |
| run: | | |
| [[ "$(poetry version --short)" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || echo prerelease=true >> $GITHUB_OUTPUT | |
| - name: Create Release | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| allowUpdates: true | |
| omitBodyDuringUpdate: true | |
| artifacts: "dist/*" | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| draft: false | |
| prerelease: steps.check-version.outputs.prerelease == 'true' | |
| - name: Publish to PyPI | |
| env: | |
| POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }} | |
| run: poetry publish |