@@ -3,6 +3,8 @@ name: Release
3
3
on :
4
4
push :
5
5
branches : [main, alpha, beta, rc, v4]
6
+ repository_dispatch :
7
+ types : [release]
6
8
7
9
concurrency :
8
10
group : ${{ github.workflow }}-${{ github.event.number || github.ref }}
14
16
permissions :
15
17
contents : write
16
18
id-token : write
19
+ pull-requests : write
17
20
18
21
jobs :
19
22
release :
@@ -34,27 +37,37 @@ jobs:
34
37
- name : Stop Nx Agents
35
38
if : ${{ always() }}
36
39
run : npx nx-cloud stop-all-agents
37
- - name : Version Packages
38
- run : pnpm run changeset:version
39
- env :
40
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
41
- - name : Commit version files
40
+ - name : Check for Changesets marked as major
41
+ id : major
42
42
run : |
43
- if [[ -n "$(git status --porcelain)" ]]; then
44
- git config --global user.name 'Tanner Linsley'
45
- git config --global user.email '[email protected] '
46
- git add -A
47
- git commit -m "ci: Version Packages"
48
- git push
49
- fi
43
+ echo "found=false" >> $GITHUB_OUTPUT
44
+ regex="(major)"
45
+ shopt -s nullglob
46
+ for file in .changeset/*.md; do
47
+ if [[ $(cat $file) =~ $regex ]]; then
48
+ echo "found=true" >> $GITHUB_OUTPUT
49
+ fi
50
+ done
51
+ - name : Run Changesets (version or publish)
52
+ id : changesets
53
+ uses :
changesets/[email protected]
54
+ with :
55
+ version : pnpm run changeset:version
56
+ publish : pnpm run changeset:publish
57
+ commit : ' ci: Version Packages'
58
+ title : ' ci: Version Packages'
50
59
env :
51
60
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
52
- - name : Publish Packages
61
+ NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
62
+ - name : Auto-merge Changesets PR
63
+ if : steps.changesets.outputs.hasChangesets == 'true' && steps.major.outputs.found == 'false'
53
64
run : |
54
- npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN} "
55
- pnpm run changeset:publish
65
+ gh pr merge --squash "$PR_NUMBER "
66
+ gh api --method POST /repos/$REPO/dispatches -f 'event_type=release'
56
67
env :
57
- NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
68
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
69
+ REPO : ${{ github.repository }}
70
+ PR_NUMBER : ${{ steps.changesets.outputs.pullRequestNumber }}
58
71
- name : Upload coverage to Codecov
59
72
60
73
with :
0 commit comments