@@ -2,63 +2,95 @@ name: Release
22
33on :
44 pull_request_target :
5- branches : [ main, test-main ]
5+ branches :
6+ - main
67 types : [ closed ]
78
9+ permissions :
10+ id-token : write # Required for OIDC. See https://docs.npmjs.com/trusted-publishers#step-2-configure-your-cicd-workflow
11+ contents : read
12+
813jobs :
914 changelog :
10- uses : ./.github/workflows/changelog.yml
11-
15+ uses : " ./.github/workflows/changelog.yml"
1216 test :
1317 uses : ./.github/workflows/test.yml
14-
1518 release :
16- if : github.event.pull_request.merged == true
1719 needs : [ changelog, test ]
20+ if : github.event.pull_request.merged == true && needs.changelog.outputs.release-type != 'no-release'
1821 runs-on : ubuntu-latest
1922 steps :
2023 - name : Checkout
2124 uses : actions/checkout@v4
25+ with :
26+ token : ${{ secrets.RELEASE_BOT_GITHUB_TOKEN }}
2227
23- - name : Update changelog
24- id : update-changelog
28+ - uses : actions/setup-node@v4
29+ with :
30+ node-version : ' 24'
31+ registry-url : ' https://registry.npmjs.org'
32+
33+ - name : Configure Git author
34+ run : |
35+ git config --global user.name "Open Terms Archive Release Bot"
36+ git config --global user.email "release-bot@opentermsarchive.org"
37+
38+ - name : Update changelog for release
39+ id : release-changelog
2540 uses : OpenTermsArchive/changelog-action/release@v0.4.0
2641
27- - name : Update package version
28- run : npm --no-git-tag-version --allow-same- version version ${{ steps.update -changelog.outputs.version }}
42+ - name : Bump package version
43+ run : npm --no-git-tag-version version ${{ steps.release -changelog.outputs.version }}
2944
30- - name : Update repository
45+ - name : Commit CHANGELOG.md and package.json changes and create tag
3146 run : |
32- git config user.name "Open Terms Archive Release Bot"
33- git config user.email "release-bot@opentermsarchive.org"
34- git commit --message="Update changelog" CHANGELOG.md package.json package-lock.json
47+ git add "package.json"
48+ git add "package-lock.json"
49+ git add "CHANGELOG.md"
50+ git commit -m "Release v${{ steps.release-changelog.outputs.version }}"
51+ git tag v${{ steps.release-changelog.outputs.version }}
3552
36- - name : Run status checks for release commit on temporary branch # use temporary branch to enable pushing commits to this branch protected by required status checks
37- uses : CasperWA/push-protected@v2.16.0 # 2.16 minimum is required to benefit from updated defaults
53+ - name : Run status checks for release commit on temporary branch # Use temporary branch to enable pushing commits to this branch protected by required status checks
54+ uses : CasperWA/push-protected@v2
3855 with :
3956 token : ${{ secrets.RELEASE_BOT_GITHUB_TOKEN }}
40- branch : ${{ github.base_ref }}
41- interval : 10 # seconds between checks
42- pre_sleep : 15
43- fail_fast : true
57+ branch : main
58+ unprotect_reviews : true
4459
45- - name : Publish Git tag
46- if : needs.changelog.outputs.release-type != 'no-release'
47- run : |
48- git tag v${{ steps.update-changelog.outputs.version }}
49- git push --tags
60+ - name : Update npm
61+ run : npm install -g npm@latest
5062
5163 - name : Publish to NPM public repository
52- if : needs.changelog.outputs.release-type != 'no-release'
53- uses : JS-DevTools/npm-publish@v3
54- with :
55- token : ${{ secrets.NPMJS_ACCESS_TOKEN }}
56- dry-run : ${{ github.base_ref != 'main' }}
64+ run : npm publish --provenance
5765
58- - name : Publish GitHub release
59- if : needs.changelog.outputs.release-type != 'no-release'
66+ - name : Push changes to repository
67+ run : git push origin && git push --tags
68+
69+ - name : Create GitHub release
6070 uses : softprops/action-gh-release@v2
6171 with :
62- tag_name : v${{ steps.update-changelog.outputs.version }}
63- body : ${{ steps.update-changelog.outputs.content }}
72+ tag_name : v${{ steps.release-changelog.outputs.version }}
73+ body : ${{ steps.release-changelog.outputs.content }}
74+ token : ${{ secrets.RELEASE_BOT_GITHUB_TOKEN }}
75+
76+ clean_changelog :
77+ if : github.event.pull_request.merged == true && needs.changelog.outputs.release-type == 'no-release'
78+ needs : [ changelog ]
79+ runs-on : ubuntu-latest
80+ steps :
81+ - uses : actions/checkout@v4
82+ with :
6483 token : ${{ secrets.RELEASE_BOT_GITHUB_TOKEN }}
84+
85+ - name : Configure Git author
86+ run : |
87+ git config --global user.name "Open Terms Archive Release Bot"
88+ git config --global user.email "release-bot@opentermsarchive.org"
89+
90+ - name : Update changelog for release
91+ uses : OpenTermsArchive/changelog-action/release@v0.2.0
92+
93+ - name : Save changelog
94+ run : |
95+ git commit -m "Clean changelog" CHANGELOG.md
96+ git push origin
0 commit comments