@@ -2,7 +2,7 @@ name: Release
22
33on :
44 push :
5- branches : [release ]
5+ branches : [develop ]
66
77concurrency : ${{ github.workflow }}-${{ github.ref }}
88
@@ -12,26 +12,58 @@ jobs:
1212 permissions :
1313 contents : write
1414 pull-requests : write
15- id-token : write
1615 steps :
1716 - uses : actions/checkout@v4
17+ with :
18+ fetch-depth : 0
1819
1920 - uses : oven-sh/setup-bun@v2
2021 with :
2122 bun-version : latest
2223
2324 - run : bun install --frozen-lockfile
2425
25- - run : bun run build
26+ - name : Check for changesets
27+ id : check
28+ run : |
29+ if ls .changeset/*.md 2>/dev/null | grep -v README.md | head -1 > /dev/null 2>&1; then
30+ echo "has_changesets=true" >> "$GITHUB_OUTPUT"
31+ else
32+ echo "has_changesets=false" >> "$GITHUB_OUTPUT"
33+ fi
2634
27- - name : Create Release Pull Request or Publish
28- id : changesets
29- uses : changesets/action@v1
30- with :
31- version : bun changeset version
32- publish : bun changeset publish
33- title : " chore: release packages"
34- commit : " chore: release packages"
35+ - name : Version packages
36+ if : steps.check.outputs.has_changesets == 'true'
37+ run : |
38+ git config user.name "github-actions[bot]"
39+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
40+ bun changeset version
41+ git add .
42+ git commit -m "chore: release packages" || echo "No changes to commit"
43+ env :
44+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
45+
46+ - name : Generate PR body
47+ if : steps.check.outputs.has_changesets == 'true'
48+ run : |
49+ for changelog in $(git diff HEAD~1 --name-only | grep 'CHANGELOG.md$'); do
50+ cat "$changelog"
51+ echo ""
52+ done > /tmp/pr-body.md
53+
54+ - name : Create or update release PR
55+ if : steps.check.outputs.has_changesets == 'true'
56+ run : |
57+ git push origin HEAD:changeset-release/release --force
58+ EXISTING_PR=$(gh pr list --base release --head changeset-release/release --json number --jq '.[0].number')
59+ if [ -n "$EXISTING_PR" ]; then
60+ gh pr edit "$EXISTING_PR" --body-file /tmp/pr-body.md
61+ else
62+ gh pr create \
63+ --base release \
64+ --head changeset-release/release \
65+ --title "chore: release packages" \
66+ --body-file /tmp/pr-body.md
67+ fi
3568 env :
3669 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
37- NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
0 commit comments