11name : Release
22
33on :
4- workflow_dispatch :
4+ workflow_dispatch : # manual “Run workflow”
55
66permissions :
77 contents : write
@@ -11,63 +11,70 @@ permissions:
1111jobs :
1212 release :
1313 runs-on : ubuntu-latest
14+
1415 steps :
16+ # 1 ▸ Checkout the branch you chose in the UI (default = main)
1517 - uses : actions/checkout@v4
1618
17- - name : Check CI Status
19+ # 2 ▸ Ensure the latest CI on this branch passed
20+ - name : Check CI status
1821 run : |
19- # Get the latest CI workflow run for this branch
20- CI_STATUS=$(gh run list --workflow=ci.yml --branch=${{ github.ref_name }} --limit=1 --json conclusion --jq '.[0].conclusion')
22+ CI_STATUS=$(gh run list \
23+ --workflow=ci.yml \
24+ --branch=${{ github.ref_name }} \
25+ --limit=1 \
26+ --json conclusion \
27+ --jq '.[0].conclusion')
2128
2229 if [[ "$CI_STATUS" != "success" ]]; then
2330 echo "❌ CI must pass before releasing. Current status: $CI_STATUS"
2431 exit 1
2532 fi
26-
27- echo "✅ CI passed. Proceeding with release..."
33+ echo "✅ CI passed. Proceeding with release…"
2834 env :
2935 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
3036
37+ # 3 ▸ Calculate tags / CHANGELOG with release-please
3138 - uses : googleapis/release-please-action@v4
3239 id : release
3340 with :
3441 token : ${{ secrets.GITHUB_TOKEN }}
35- config-file : .release-please-manifest .json
36- manifest-file : .release-please-manifest.json
42+ config-file : .release-please-config .json # your config
43+ manifest-file : .release-please-manifest.json # version manifest
3744
38- # Publish to npm when releases are created
45+ # 4 ▸ Only continue if at least one package was released
3946 - uses : actions/setup-node@v4
40- if : ${{ steps.release.outputs.releases_created }}
47+ if : ${{ steps.release.outputs.release_created == 'true' }}
4148 with :
42- node-version : ' 18 '
43- registry-url : ' https://registry.npmjs.org'
49+ node-version : 18
50+ registry-url : https://registry.npmjs.org
4451
4552 - name : Install dependencies
46- if : ${{ steps.release.outputs.releases_created }}
53+ if : ${{ steps.release.outputs.release_created == 'true' }}
4754 run : |
4855 corepack enable
4956 pnpm install --frozen-lockfile
5057
58+ # 5 ▸ Publish each released workspace package
5159 - name : Publish packages
52- if : ${{ steps.release.outputs.releases_created }}
60+ if : ${{ steps.release.outputs.release_created == 'true' }}
61+ env :
62+ NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
5363 run : |
54- # Check which packages were released and publish them
55- echo "Releases created: ${{ steps.release.outputs.releases_created }}"
64+ echo "ℹ️ Packages flagged for publish:"
65+ echo "• core → ${{ steps.release.outputs['packages/core--release_version'] }}"
66+ echo "• cli → ${{ steps.release.outputs['packages/cli--release_version'] }}"
5667
57- # Publish core package if it was released
58- if [[ '${{ steps.release.outputs.packages_core--release_created }}' == 'true' ]]; then
59- echo "📦 Publishing @react-zero-ui/core..."
68+ if [[ '${{ steps.release.outputs['packages/core--release_created'] }}' == 'true' ]]; then
69+ echo "📦 Publishing @react-zero-ui/core…"
6070 cd packages/core
6171 npm publish --access public
6272 cd ../..
6373 fi
6474
65- # Publish CLI package if it was released
66- if [[ '${{ steps.release.outputs.packages_cli--release_created }}' == 'true' ]]; then
67- echo "📦 Publishing create-zero-ui..."
75+ if [[ '${{ steps.release.outputs['packages/cli--release_created'] }}' == 'true' ]]; then
76+ echo "📦 Publishing create-zero-ui…"
6877 cd packages/cli
6978 npm publish --access public
7079 cd ../..
7180 fi
72- env :
73- NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
0 commit comments