Prepare release #9
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 Preview | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| types: | |
| - opened | |
| - synchronize | |
| - reopened | |
| - ready_for_review | |
| - labeled | |
| - unlabeled | |
| jobs: | |
| preview: | |
| name: Generate release preview | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| steps: | |
| - name: Determine release label | |
| id: label | |
| run: | | |
| set -euo pipefail | |
| LABELS=$(jq -r '.pull_request.labels[].name // empty' "$GITHUB_EVENT_PATH" | tr '\n' ' ') | |
| if echo "$LABELS" | grep -Eq '\b(hotfix|minor|major)\b'; then | |
| echo "has_label=true" >> "$GITHUB_OUTPUT" | |
| echo "label_name=$(echo "$LABELS" | tr ' ' '\n' | grep -E '\b(hotfix|minor|major)\b' | head -n1)" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "has_label=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| if: steps.label.outputs.has_label == 'true' | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| if: steps.label.outputs.has_label == 'true' | |
| - name: Generate release metadata preview | |
| id: metadata | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GITHUB_REPOSITORY: ${{ github.repository }} | |
| GITHUB_SHA: ${{ github.event.pull_request.head.sha }} | |
| INCLUDE_OPEN_PR: "true" | |
| PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} | |
| DEFAULT_BUMP: patch | |
| run: | | |
| set -euo pipefail | |
| chmod +x .github/scripts/generate_release_metadata.py | |
| METADATA_JSON=$(./.github/scripts/generate_release_metadata.py) | |
| echo "$METADATA_JSON" > metadata.json | |
| RELEASE_VERSION=$(jq -r '.release_version' metadata.json) | |
| BUMP_TYPE=$(jq -r '.bump_type' metadata.json) | |
| PREVIEW_SUMMARY=$(jq -r '.preview_summary' metadata.json) | |
| echo "release_version=$RELEASE_VERSION" >> "$GITHUB_OUTPUT" | |
| echo "bump_type=$BUMP_TYPE" >> "$GITHUB_OUTPUT" | |
| { | |
| echo 'preview_summary<<EOF' | |
| echo "$PREVIEW_SUMMARY" | |
| echo 'EOF' | |
| } >> "$GITHUB_OUTPUT" | |
| if: steps.label.outputs.has_label == 'true' | |
| - name: Create or update release preview comment | |
| uses: peter-evans/create-or-update-comment@v4 | |
| with: | |
| issue-number: ${{ github.event.pull_request.number }} | |
| body: | | |
| <!-- release-preview --> | |
| ${{ steps.metadata.outputs.preview_summary }} | |
| body-includes: "<!-- release-preview -->" | |
| edit-mode: replace | |
| if: steps.label.outputs.has_label == 'true' | |
| - name: Clear release preview comment when label missing | |
| if: steps.label.outputs.has_label != 'true' | |
| uses: peter-evans/create-or-update-comment@v4 | |
| with: | |
| issue-number: ${{ github.event.pull_request.number }} | |
| body: | | |
| <!-- release-preview --> | |
| ⚠️ Release preview unavailable. Add a `hotfix`, `minor`, or `major` label to view the upcoming release summary. | |
| body-includes: "<!-- release-preview -->" | |
| edit-mode: replace |