Skip to content

Merge pull request #357 from CloudHub-Social/codex/surface-parity-pass #296

Merge pull request #357 from CloudHub-Social/codex/surface-parity-pass

Merge pull request #357 from CloudHub-Social/codex/surface-parity-pass #296

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