Merge pull request #357 from CloudHub-Social/codex/surface-parity-pass #296
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: Create Release PR | |
| on: | |
| push: | |
| branches: [integration] | |
| permissions: {} | |
| jobs: | |
| prepare-release: | |
| if: "!contains(github.event.head_commit.message, 'chore: prepare release')" | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Detect release branch merge | |
| id: release-merge | |
| shell: bash | |
| env: | |
| HEAD_COMMIT_MESSAGE: ${{ github.event.head_commit.message }} | |
| run: | | |
| first_line="${HEAD_COMMIT_MESSAGE%%$'\n'*}" | |
| if [[ "$first_line" =~ ^Merge\ pull\ request\ \#[0-9]+\ from\ CloudHub-Social/release$ ]]; then | |
| echo "skip=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "skip=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Generate bot token | |
| id: generate-token | |
| if: steps.release-merge.outputs.skip != 'true' | |
| uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 | |
| with: | |
| app-id: ${{ secrets.APP_ID }} | |
| private-key: ${{ secrets.APP_PRIVATE_KEY }} | |
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| if: steps.release-merge.outputs.skip != 'true' | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: true | |
| token: ${{ steps.generate-token.outputs.token }} | |
| - uses: fregante/setup-git-user@024bc0b8e177d7e77203b48dab6fb45666854b35 # v2.0.2 | |
| if: steps.release-merge.outputs.skip != 'true' | |
| - uses: knope-dev/action@19617851f9f13ab2f27a05989c55efb18aca3675 # v2.1.2 | |
| if: steps.release-merge.outputs.skip != 'true' | |
| with: | |
| version: 0.22.3 | |
| - name: Prepare Release | |
| id: prepare-release | |
| if: steps.release-merge.outputs.skip != 'true' | |
| shell: bash | |
| run: | | |
| set +e | |
| output="$(knope prepare-release --verbose 2>&1)" | |
| status=$? | |
| set -e | |
| printf '%s\n' "$output" | |
| if [[ $status -eq 0 ]]; then | |
| echo "prepared=true" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| if grep -Fq "releases::no_release" <<<"$output"; then | |
| echo "prepared=false" >> "$GITHUB_OUTPUT" | |
| echo "No releaseable changes detected; skipping release PR update." | |
| exit 0 | |
| fi | |
| exit $status | |
| env: | |
| GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} | |
| - name: Enrich changelog and update release PR | |
| if: steps.release-merge.outputs.skip != 'true' && steps.prepare-release.outputs.prepared == 'true' | |
| env: | |
| GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} | |
| run: node .github/scripts/enrich-changelog.mjs --update-release-pr | |
| - name: Amend release commit with enriched changelog | |
| if: steps.release-merge.outputs.skip != 'true' && steps.prepare-release.outputs.prepared == 'true' | |
| shell: bash | |
| run: | | |
| if [[ "$(git rev-parse --abbrev-ref HEAD)" != "release" ]]; then | |
| echo "Not on release branch — skipping amend." | |
| exit 1 | |
| fi | |
| if git diff --cached --name-only | grep -q "CHANGELOG.md"; then | |
| git add CHANGELOG.md | |
| git commit --amend --no-edit | |
| elif git diff --name-only HEAD | grep -q "CHANGELOG.md"; then | |
| git add CHANGELOG.md | |
| git commit --amend --no-edit | |
| fi | |
| - name: Push release branch | |
| if: steps.release-merge.outputs.skip != 'true' && steps.prepare-release.outputs.prepared == 'true' | |
| shell: bash | |
| run: git push --force --set-upstream origin release |