88 branches :
99 - main
1010 - test-*
11- tags :
12- - v*
13- - wasi-threads-v*
1411 pull_request :
1512 paths-ignore :
1613 - ' **/*.md'
1714 - ' **/docs/**'
1815 workflow_dispatch :
16+ inputs :
17+ release_independent_package :
18+ description : ' Release independent package'
19+ required : true
20+ default : ' none'
21+ type : choice
22+ options :
23+ - ' none'
24+ - ' main'
25+ - ' wasi-threads'
26+ - ' ts-transform-macro'
27+ - ' rollup-plugin-emscripten-esm-library'
28+ - ' ts-transform-emscripten-esm-library'
29+
30+ permissions :
31+ id-token : write
32+ contents : write
1933
2034env :
2135 WASI_VERSION : ' 27'
7993 with :
8094 node-version : ${{ matrix.target == 'wasm64-unknown-emscripten' && '24.5.0' || env.NODE_VERSION }}
8195 registry-url : ' https://registry.npmjs.org'
82- env :
83- NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
8496
8597 - name : NPM Install
8698 shell : bash
@@ -143,8 +155,8 @@ jobs:
143155 npm run test:wasm32 -w packages/test
144156
145157 release :
146- name : Release
147- if : ${{ startsWith( github.event.ref, 'refs/tags/v') }}
158+ name : Release main packages
159+ if : ${{ github.event_name == 'workflow_dispatch' && inputs.release_independent_package == 'main' }}
148160 needs : build
149161 runs-on : ubuntu-latest
150162
@@ -169,9 +181,9 @@ jobs:
169181 with :
170182 node-version : ${{ env.NODE_VERSION }}
171183 registry-url : ' https://registry.npmjs.org'
172- env :
173- NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
174-
184+
185+ - name : Update npm
186+ run : npm install -g npm@latest
175187 - name : NPM Install
176188 shell : bash
177189 run : |
@@ -186,22 +198,31 @@ jobs:
186198 run : |
187199 node ./script/release.js
188200 npm publish --ignore-scripts -w packages/runtime -w packages/node -w packages/emnapi -w packages/core
201+
202+ - name : Get version
203+ id : pkg
204+ run : echo "version=$(node -p \"require('./packages/emnapi/package.json').version\")" >> $GITHUB_OUTPUT
205+
206+ - name : Create tag
207+ run : |
208+ git tag v${{ steps.pkg.outputs.version }}
209+ git push origin v${{ steps.pkg.outputs.version }}
189210
190211 - name : Create release
191212 uses : softprops/action-gh-release@v1
192213 env :
193214 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
194215 with :
195- tag_name : ${{ github.ref_name }}
196- name : ${{ github.ref_name }}
216+ tag_name : v ${{ steps.pkg.outputs.version }}
217+ name : v ${{ steps.pkg.outputs.version }}
197218 draft : true
198219 prerelease : false
199220 generate_release_notes : true
200221 files : ./script/emnapi.zip
201222
202- release-wasi-threads :
203- name : Release
204- if : ${{ startsWith( github.event.ref, 'refs/tags/wasi-threads-v') }}
223+ release-independent-package :
224+ name : Release independent package
225+ if : ${{ github.event_name == 'workflow_dispatch' && inputs.release_independent_package && inputs.release_independent_package != 'none' && inputs.release_independent_package != 'main' }}
205226 needs : build
206227 runs-on : ubuntu-latest
207228
@@ -211,9 +232,8 @@ jobs:
211232 with :
212233 node-version : ${{ env.NODE_VERSION }}
213234 registry-url : ' https://registry.npmjs.org'
214- env :
215- NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
216-
235+ - name : Update npm
236+ run : npm install -g npm@latest
217237 - name : NPM Install
218238 shell : bash
219239 run : |
@@ -222,7 +242,16 @@ jobs:
222242
223243 - name : NPM Build
224244 shell : bash
225- run : npm run build -w packages/wasi-threads
245+ run : npm run build -w packages/${{ inputs.release_independent_package }}
226246
227247 - name : Publish
228- run : npm publish --ignore-scripts -w packages/wasi-threads
248+ run : npm publish --ignore-scripts -w packages/${{ inputs.release_independent_package }}
249+
250+ - name : Get version
251+ id : pkg
252+ run : echo "version=$(node -p \"require('./packages/${{ inputs.release_independent_package }}/package.json').version\")" >> $GITHUB_OUTPUT
253+
254+ - name : Create tag
255+ run : |
256+ git tag ${{ inputs.release_independent_package }}-v${{ steps.pkg.outputs.version }}
257+ git push origin ${{ inputs.release_independent_package }}-v${{ steps.pkg.outputs.version }}
0 commit comments