1- name : Release CI
1+ name : Pre-release CI
22
33on :
44 push :
55 branches :
6- - ' release/[0-9]+.[0-9]+.[0-9]+'
7- - ' hotfix/[0-9]+.[0-9]+.[0-9]+'
86 - ' pre-release/[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+'
97 - ' pre-release/[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+'
108 - ' pre-release/[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+'
119
1210jobs :
1311 build :
14- runs-on : macos-latest # 如果用了electron,记得改成 macOS-latest
12+ runs-on : macOS-latest # 如果用了electron,记得改成 macOS-latest
13+
1514 permissions :
1615 contents : write
17- pull-requests : write
18- id-token : write
1916
2017 strategy :
2118 matrix :
@@ -24,17 +21,12 @@ jobs:
2421
2522 steps :
2623 - uses : actions/checkout@v3
27- - run : |
28- git config user.name ${{ github.actor }}
29- git config user.email ${{ github.actor }}@users.noreply.github.com
30-
3124 - name : Use Node.js ${{ matrix.node-version }}
32- uses : actions/setup-node@v4
25+ uses : actions/setup-node@v3
3326 with :
3427 node-version : ${{ matrix.node-version }}
3528 cache : ' npm'
3629 cache-dependency-path : ' ./common/config/rush/pnpm-lock.yaml'
37- registry-url : ' https://registry.npmjs.org'
3830
3931 - name : Print All Github Environment Variables
4032 run : env
@@ -45,181 +37,46 @@ jobs:
4537 python-version : ' 3.11'
4638
4739 - name : Set PYTHON env
48- run : echo "PYTHON=$(which python3)" >> $GITHUB_ENV
49-
50- # Install rush
51- - name : Install native deps for node-canvas (macOS)
52- if : runner.os == 'macOS'
53- run : |
54- brew update
55- brew install pkg-config cairo pango libpng jpeg giflib librsvg
56- - name : Install native deps for node-canvas (Linux)
57- if : runner.os == 'Linux'
58- run : |
59- sudo apt-get update
60- sudo apt-get install -y build-essential pkg-config libcairo2-dev libpango1.0-dev libpng-dev libjpeg-dev libgif-dev librsvg2-dev
40+ run :
41+ echo "PYTHON=$(which python3)" >> $GITHUB_ENV
42+
43+ # Install rush
6144 - name : Install rush
6245 run : node common/scripts/install-run-rush.js install --bypass-policy
6346
64- - name : Parse semver for release
65- if : startsWith(github.ref_name, 'release/')
66- id : semver_release
67- uses : xile611/read-package-version-action@main
68- with :
69- path : packages/vrender
70- semver_string : ${{ github.ref_name }}
71- semver_pattern : ' ^release/(.*)$'
72-
73- - name : Parse semver for hotfix
74- if : startsWith(github.ref_name, 'hotfix/')
75- id : semver_hotfix
76- uses : xile611/read-package-version-action@main
77- with :
78- path : packages/vrender
79- semver_string : ${{ github.ref_name }}
80- semver_pattern : ' ^hotfix/(.*)$'
81-
82- - name : Parse semver for pre-release
83- if : startsWith(github.ref_name, 'pre-release/')
84- id : semver_prerelease
47+ - name : Parse semver version from branch name
48+ id : semver_parser
8549 uses : xile611/read-package-version-action@main
8650 with :
8751 path : packages/vrender
8852 semver_string : ${{ github.ref_name }}
89- semver_pattern : ' ^pre-release/(.*)$'
90-
91- - name : update nextBump of version policies (release)
92- if : startsWith(github.ref_name, 'release/')
93- uses : xile611/set-next-bump-of-rush@main
94- with :
95- release_version : ${{ steps.semver_release.outputs.full }}
96- write_next_bump : true
97-
98- - name : update nextBump of version policies (hotfix)
99- if : startsWith(github.ref_name, 'hotfix/')
100- uses : xile611/set-next-bump-of-rush@main
101- with :
102- release_version : ${{ steps.semver_hotfix.outputs.full }}
103- write_next_bump : true
104-
105- - name : Update version
106- if : startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
107- run : node common/scripts/install-run-rush.js version --bump
108-
109- # - name: Run CI
110- # working-directory: ./tools/bugserver-trigger
111- # env:
112- # BUG_SERVER_TOKEN: ${{ secrets.BUG_SERVER_TOKEN }}
113- # run: node ../../common/scripts/install-run-rushx.js ci -t @internal/bugserver-trigger
53+ semver_pattern : ' ^pre-release/(.*)$' # ^v?(.*)$ by default
11454
11555 - name : Apply prereleaseName
116- if : startsWith(github.ref_name, 'pre-release/')
117- run : node common/scripts/apply-prerelease-version.js ${{ steps.semver_prerelease.outputs.pre_release_name }} ${{ steps.semver_prerelease.outputs.main }}
56+ run : node common/scripts/apply-prerelease-version.js ${{ steps.semver_parser.outputs.pre_release_name }} ${{ steps.semver_parser.outputs.main }}
11857
119- - name : Build packages (pre-release)
120- if : startsWith(github.ref_name, 'pre-release/')
58+ - name : Build packages
12159 run : node common/scripts/install-run-rush.js build --only tag:package
12260
123- - name : Publish to npm (release)
124- if : startsWith(github.ref_name, 'release/')
125- run : node common/scripts/install-run-rush.js publish --publish --include-all --tag latest
126-
127- - name : Publish to npm (hotfix)
128- if : startsWith(github.ref_name, 'hotfix/')
129- run : node common/scripts/install-run-rush.js publish --publish --include-all --tag hotfix
130-
131- - name : Publish to npm (pre-release)
132- if : startsWith(github.ref_name, 'pre-release/')
133- run : node common/scripts/install-run-rush.js publish --publish --include-all --tag ${{ steps.semver_prerelease.outputs.pre_release_type }}
61+ - name : Publish to npm
62+ env :
63+ NODE_AUTH_TOKEN : ${{secrets.NPM_TOKEN}}
64+ NPM_AUTH_TOKEN : ${{secrets.NPM_TOKEN}}
65+ run : node common/scripts/install-run-rush.js publish --publish --include-all --tag ${{ steps.semver_parser.outputs.pre_release_type }}
13466
13567 - name : Update shrinkwrap
13668 run : node common/scripts/install-run-rush.js update
13769
138- - name : Get npm version (release/hotfix)
139- if : startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
70+ - name : Get npm version
14071 id : package-version
141- uses : xile611/read-package-version-action@v2.1
142- with :
143- path : packages/vrender
144-
145- - name : Get npm version (pre-release)
146- if : startsWith(github.ref_name, 'pre-release/')
147- id : package-version-pre
14872 uses : xile611/read-package-version-action@main
14973 with :
15074 path : packages/vrender
15175
152- - name : Disable git hooks for CI (release/hotfix)
153- if : startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
154- run : git config core.hooksPath /dev/null
155- - name : Commit & Push changes (release/hotfix)
156- if : startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
76+ - name : Commit & Push changes
15777 uses : actions-js/push@master
158- env :
159- HUSKY : 0
16078 with :
16179 github_token : ${{ secrets.GITHUB_TOKEN }}
16280 message : ' build: prelease version ${{ steps.package-version.outputs.current_version }}'
16381 branch : ${{ github.ref_name }}
164-
165- - name : Disable git hooks for CI (pre-release)
166- if : startsWith(github.ref_name, 'pre-release/')
167- run : git config core.hooksPath /dev/null
168- - name : Commit & Push changes (pre-release)
169- if : startsWith(github.ref_name, 'pre-release/')
170- uses : actions-js/push@master
171- env :
172- HUSKY : 0
173- with :
174- github_token : ${{ secrets.GITHUB_TOKEN }}
175- message : ' build: prelease version ${{ steps.package-version-pre.outputs.current_version }}'
176- branch : ${{ github.ref_name }}
17782 author_name : ${{ github.actor }}
178-
179- - name : Collect changelog of rush
180- if : startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
181- uses : xile611/collect-rush-changlog@main
182- id : changelog
183- with :
184- version : ${{ steps.package-version.outputs.current_version }}
185-
186- - name : Create Release for Tag (release)
187- if : startsWith(github.ref_name, 'release/')
188- id : release_tag
189- uses : ncipollo/release-action@v1.12.0
190- env :
191- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
192- with :
193- tag : v${{ steps.package-version.outputs.current_version }}
194- commit : main
195- prerelease : false
196- body : |
197- ${{ steps.changelog.outputs.markdown }}
198- draft : true
199-
200- - name : Create Release for Tag (hotfix)
201- if : startsWith(github.ref_name, 'hotfix/')
202- id : release_tag_hotfix
203- uses : ncipollo/release-action@v1.12.0
204- env :
205- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
206- with :
207- tag : v${{ steps.package-version.outputs.current_version }}
208- commit : ${{ github.ref_name }}
209- prerelease : false
210- body : |
211- ${{ steps.changelog.outputs.markdown }}
212- draft : true
213-
214- - name : Create Pull Request
215- if : startsWith(github.ref_name, 'release/')
216- uses : dustinirving/create-pr@v1.0.2
217- with :
218- token : ${{ secrets.GITHUB_TOKEN }}
219- title : ' [Auto release] release ${{ steps.package-version.outputs.current_version }}'
220- base : main
221- head : ${{ github.ref_name }}
222- labels : release
223- reviewers : xile611
224- body : |
225- ${{ steps.changelog.outputs.markdown }}
0 commit comments