Skip to content

Commit bd2067f

Browse files
committed
chore: workflow problem
1 parent d2e7b27 commit bd2067f

1 file changed

Lines changed: 227 additions & 18 deletions

File tree

.github/workflows/pre-release.yml

Lines changed: 227 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,279 @@
1-
name: Pre-release CI
1+
name: Release CI
22

33
on:
44
push:
55
branches:
6+
- 'release/[0-9]+.[0-9]+.[0-9]+'
7+
- 'hotfix/[0-9]+.[0-9]+.[0-9]+'
68
- 'pre-release/[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+'
79
- 'pre-release/[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+'
810
- 'pre-release/[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+'
911

1012
jobs:
1113
build:
12-
runs-on: macOS-13 # 如果用了electron,记得改成 macOS-latest
13-
14+
runs-on: macos-latest # 如果用了electron,记得改成 macOS-latest
1415
permissions:
1516
contents: write
17+
pull-requests: write
18+
id-token: write
1619

1720
strategy:
1821
matrix:
19-
node-version: [18.x]
22+
node-version: [20.x]
2023
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
2124

2225
steps:
2326
- 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+
2431
- name: Use Node.js ${{ matrix.node-version }}
25-
uses: actions/setup-node@v3
32+
uses: actions/setup-node@v4
2633
with:
2734
node-version: ${{ matrix.node-version }}
2835
cache: 'npm'
2936
cache-dependency-path: './common/config/rush/pnpm-lock.yaml'
37+
registry-url: 'https://registry.npmjs.org'
38+
39+
- name: Ensure npm >= 11.5.1 (conditional)
40+
run: |
41+
set -e
42+
NPMV=$(npm -v)
43+
echo "Current npm version: $NPMV"
44+
REQ_MAJOR=11
45+
REQ_MINOR=5
46+
REQ_PATCH=1
47+
MAJOR=${NPMV%%.*}
48+
REST=${NPMV#*.}
49+
MINOR=${REST%%.*}
50+
PATCH=${REST#*.}
51+
needs_upgrade=false
52+
if [ "$MAJOR" -lt "$REQ_MAJOR" ]; then
53+
needs_upgrade=true
54+
elif [ "$MAJOR" -eq "$REQ_MAJOR" ]; then
55+
if [ "$MINOR" -lt "$REQ_MINOR" ]; then
56+
needs_upgrade=true
57+
elif [ "$MINOR" -eq "$REQ_MINOR" ] && [ "$PATCH" -lt "$REQ_PATCH" ]; then
58+
needs_upgrade=true
59+
fi
60+
fi
61+
if [ "$needs_upgrade" = true ]; then
62+
echo "npm < 11.5.1 detected, installing pinned npm@11.5.1 for Trusted Publishing"
63+
npm install -g npm@11.5.1
64+
echo "npm upgraded to: $(npm -v)"
65+
else
66+
echo "npm version satisfies requirement (>= 11.5.1)"
67+
fi
68+
69+
- name: Print All Github Environment Variables
70+
run: env
3071

31-
# Install rush
72+
# Install rush
73+
- name: Install native deps for node-canvas (macOS)
74+
if: runner.os == 'macOS'
75+
run: |
76+
brew update
77+
brew install pkg-config cairo pango libpng jpeg giflib librsvg
78+
- name: Install native deps for node-canvas (Linux)
79+
if: runner.os == 'Linux'
80+
run: |
81+
sudo apt-get update
82+
sudo apt-get install -y build-essential pkg-config libcairo2-dev libpango1.0-dev libpng-dev libjpeg-dev libgif-dev librsvg2-dev
3283
- name: Install rush
3384
run: node common/scripts/install-run-rush.js install --bypass-policy
3485

35-
- name: Parse semver version from branch name
36-
id: semver_parser
86+
- name: Parse semver for release
87+
if: startsWith(github.ref_name, 'release/')
88+
id: semver_release
89+
uses: xile611/read-package-version-action@main
90+
with:
91+
path: packages/vrender
92+
semver_string: ${{ github.ref_name }}
93+
semver_pattern: '^release/(.*)$'
94+
95+
- name: Parse semver for hotfix
96+
if: startsWith(github.ref_name, 'hotfix/')
97+
id: semver_hotfix
98+
uses: xile611/read-package-version-action@main
99+
with:
100+
path: packages/vrender
101+
semver_string: ${{ github.ref_name }}
102+
semver_pattern: '^hotfix/(.*)$'
103+
104+
- name: Parse semver for pre-release
105+
if: startsWith(github.ref_name, 'pre-release/')
106+
id: semver_prerelease
37107
uses: xile611/read-package-version-action@main
38108
with:
39109
path: packages/vrender
40110
semver_string: ${{ github.ref_name }}
41-
semver_pattern: '^pre-release/(.*)$' # ^v?(.*)$ by default
111+
semver_pattern: '^pre-release/(.*)$'
112+
113+
- name: update nextBump of version policies (release)
114+
if: startsWith(github.ref_name, 'release/')
115+
uses: xile611/set-next-bump-of-rush@main
116+
with:
117+
release_version: ${{ steps.semver_release.outputs.full }}
118+
write_next_bump: true
119+
120+
- name: update nextBump of version policies (hotfix)
121+
if: startsWith(github.ref_name, 'hotfix/')
122+
uses: xile611/set-next-bump-of-rush@main
123+
with:
124+
release_version: ${{ steps.semver_hotfix.outputs.full }}
125+
write_next_bump: true
126+
127+
- name: Update version
128+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
129+
run: node common/scripts/install-run-rush.js version --bump
130+
131+
- name: Build vrender-core
132+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
133+
run: node common/scripts/install-run-rush.js build --only @visactor/vrender-core
134+
135+
- name: Build vrender-kits
136+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
137+
run: node common/scripts/install-run-rush.js build --only @visactor/vrender-kits
138+
139+
- name: Build vrender-animate
140+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
141+
run: node common/scripts/install-run-rush.js build --only @visactor/vrender-animate
142+
143+
- name: Build vrender-components
144+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
145+
run: node common/scripts/install-run-rush.js build --only @visactor/vrender-components
146+
147+
- name: Build vrender
148+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
149+
run: node common/scripts/install-run-rush.js build --only @visactor/vrender
150+
151+
- name: Build bugserver
152+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
153+
run: node common/scripts/install-run-rush.js build --only @internal/bugserver-trigger
154+
155+
# - name: Run CI
156+
# working-directory: ./tools/bugserver-trigger
157+
# env:
158+
# BUG_SERVER_TOKEN: ${{ secrets.BUG_SERVER_TOKEN }}
159+
# run: node ../../common/scripts/install-run-rushx.js ci -t @internal/bugserver-trigger
160+
161+
- name: Build react-vrender
162+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
163+
run: node common/scripts/install-run-rush.js build --only @visactor/react-vrender
164+
165+
- name: Build react-vrender-utils
166+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
167+
run: node common/scripts/install-run-rush.js build --only @visactor/react-vrender-utils
42168

43169
- name: Apply prereleaseName
44-
run: node common/scripts/apply-prerelease-version.js ${{ steps.semver_parser.outputs.pre_release_name }} ${{ steps.semver_parser.outputs.main }}
170+
if: startsWith(github.ref_name, 'pre-release/')
171+
run: node common/scripts/apply-prerelease-version.js ${{ steps.semver_prerelease.outputs.pre_release_name }} ${{ steps.semver_prerelease.outputs.main }}
45172

46-
- name: Build packages
173+
- name: Build packages (pre-release)
174+
if: startsWith(github.ref_name, 'pre-release/')
47175
run: node common/scripts/install-run-rush.js build --only tag:package
48176

49-
- name: Publish to npm
50-
env:
51-
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
52-
NPM_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
53-
run: node common/scripts/install-run-rush.js publish --publish --include-all --tag ${{ steps.semver_parser.outputs.pre_release_type }}
177+
- name: Publish to npm (release)
178+
if: startsWith(github.ref_name, 'release/')
179+
run: node common/scripts/install-run-rush.js publish --publish --include-all --tag latest
180+
181+
- name: Publish to npm (hotfix)
182+
if: startsWith(github.ref_name, 'hotfix/')
183+
run: node common/scripts/install-run-rush.js publish --publish --include-all --tag hotfix
184+
185+
- name: Publish to npm (pre-release)
186+
if: startsWith(github.ref_name, 'pre-release/')
187+
run: node common/scripts/install-run-rush.js publish --publish --include-all --tag ${{ steps.semver_prerelease.outputs.pre_release_type }}
54188

55189
- name: Update shrinkwrap
56190
run: node common/scripts/install-run-rush.js update
57191

58-
- name: Get npm version
192+
- name: Get npm version (release/hotfix)
193+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
59194
id: package-version
195+
uses: xile611/read-package-version-action@v2.1
196+
with:
197+
path: packages/vrender
198+
199+
- name: Get npm version (pre-release)
200+
if: startsWith(github.ref_name, 'pre-release/')
201+
id: package-version-pre
60202
uses: xile611/read-package-version-action@main
61203
with:
62204
path: packages/vrender
63205

64-
- name: Commit & Push changes
206+
- name: Disable git hooks for CI (release/hotfix)
207+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
208+
run: git config core.hooksPath /dev/null
209+
- name: Commit & Push changes (release/hotfix)
210+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
65211
uses: actions-js/push@master
212+
env:
213+
HUSKY: 0
66214
with:
67215
github_token: ${{ secrets.GITHUB_TOKEN }}
68216
message: 'build: prelease version ${{ steps.package-version.outputs.current_version }}'
69217
branch: ${{ github.ref_name }}
218+
219+
- name: Disable git hooks for CI (pre-release)
220+
if: startsWith(github.ref_name, 'pre-release/')
221+
run: git config core.hooksPath /dev/null
222+
- name: Commit & Push changes (pre-release)
223+
if: startsWith(github.ref_name, 'pre-release/')
224+
uses: actions-js/push@master
225+
env:
226+
HUSKY: 0
227+
with:
228+
github_token: ${{ secrets.GITHUB_TOKEN }}
229+
message: 'build: prelease version ${{ steps.package-version-pre.outputs.current_version }}'
230+
branch: ${{ github.ref_name }}
70231
author_name: ${{ github.actor }}
232+
233+
- name: Collect changelog of rush
234+
if: startsWith(github.ref_name, 'release/') || startsWith(github.ref_name, 'hotfix/')
235+
uses: xile611/collect-rush-changlog@main
236+
id: changelog
237+
with:
238+
version: ${{ steps.package-version.outputs.current_version }}
239+
240+
- name: Create Release for Tag (release)
241+
if: startsWith(github.ref_name, 'release/')
242+
id: release_tag
243+
uses: ncipollo/release-action@v1.12.0
244+
env:
245+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
246+
with:
247+
tag: v${{ steps.package-version.outputs.current_version }}
248+
commit: main
249+
prerelease: false
250+
body: |
251+
${{ steps.changelog.outputs.markdown }}
252+
draft: true
253+
254+
- name: Create Release for Tag (hotfix)
255+
if: startsWith(github.ref_name, 'hotfix/')
256+
id: release_tag_hotfix
257+
uses: ncipollo/release-action@v1.12.0
258+
env:
259+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
260+
with:
261+
tag: v${{ steps.package-version.outputs.current_version }}
262+
commit: ${{ github.ref_name }}
263+
prerelease: false
264+
body: |
265+
${{ steps.changelog.outputs.markdown }}
266+
draft: true
267+
268+
- name: Create Pull Request
269+
if: startsWith(github.ref_name, 'release/')
270+
uses: dustinirving/create-pr@v1.0.2
271+
with:
272+
token: ${{ secrets.GITHUB_TOKEN }}
273+
title: '[Auto release] release ${{ steps.package-version.outputs.current_version }}'
274+
base: main
275+
head: ${{ github.ref_name }}
276+
labels: release
277+
reviewers: xile611
278+
body: |
279+
${{ steps.changelog.outputs.markdown }}

0 commit comments

Comments
 (0)