@@ -2,34 +2,33 @@ name: Release
22
33on :
44 push :
5- branches : [main, alpha, beta, rc]
5+ branches : [main, alpha, beta, rc, 'v[0-9]', '*-pre', '*-maint' ]
66
77concurrency :
8- group : ${{ github.workflow }}-${{ github.event.number || github. ref }}
9- cancel-in-progress : true
8+ group : ${{ github.workflow }}-${{ github.ref }}
9+ cancel-in-progress : false
1010
1111env :
1212 NX_CLOUD_ACCESS_TOKEN : ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
13- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
1413
15- permissions : {}
14+ permissions :
15+ contents : read
1616
1717jobs :
1818 release :
1919 name : Release
20- if : ${{ github.repository_owner == 'TanStack' && !contains(github.event.head_commit.message, '[skip ci]') }}
20+ if : ${{ github.repository_owner == 'TanStack' }}
2121 runs-on : ubuntu-latest
2222 permissions :
2323 contents : write
2424 id-token : write
25- pull-requests : read
26- statuses : read
25+ pull-requests : write
2726 steps :
2827 - name : Checkout
2928 uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
3029 with :
3130 fetch-depth : 0
32- persist-credentials : false
31+ persist-credentials : true # changesets/action pushes version PR commits
3332 - name : Setup Tools
3433 uses : tanstack/config/.github/setup@e4b48f16568324f76f467aa4c2aac2f05db632c3 # main
3534 - name : Build
@@ -40,28 +39,49 @@ jobs:
4039 run : pnpm --filter @tanstack/cli exec playwright install --with-deps chrome
4140 - name : E2E Blocking
4241 run : pnpm --filter @tanstack/cli test:e2e
43- - name : Generate Semantic Changeset Fallback
44- run : pnpm run changeset:generate
4542
46- - name : Prepare Release Context
47- id : release
48- run : pnpm run release:prepare
43+ - name : Enter Pre-Release Mode
44+ if : " (contains(github.ref_name, '-pre') || github.ref_name == 'alpha' || github.ref_name == 'beta' || github.ref_name == 'rc') && !hashFiles('.changeset/pre.json')"
45+ run : |
46+ BRANCH="${GITHUB_REF_NAME}"
47+ if [[ "$BRANCH" == "alpha" || "$BRANCH" == "beta" || "$BRANCH" == "rc" ]]; then
48+ pnpm changeset pre enter "$BRANCH"
49+ else
50+ pnpm changeset pre enter pre
51+ fi
52+ - name : Determine dist-tag
53+ id : dist-tag
54+ run : |
55+ BRANCH="${GITHUB_REF_NAME}"
56+ if [[ "$BRANCH" == "alpha" || "$BRANCH" == "beta" || "$BRANCH" == "rc" ]]; then
57+ echo "prerelease=true" >> "$GITHUB_OUTPUT"
58+ echo "tag=$BRANCH" >> "$GITHUB_OUTPUT"
59+ elif [[ "$BRANCH" == *-pre ]]; then
60+ echo "prerelease=true" >> "$GITHUB_OUTPUT"
61+ echo "tag=pre" >> "$GITHUB_OUTPUT"
62+ elif [[ "$BRANCH" == *-maint ]]; then
63+ echo "tag=maint" >> "$GITHUB_OUTPUT"
64+ elif [[ "$BRANCH" =~ ^v[0-9]+$ ]]; then
65+ echo "tag=$BRANCH" >> "$GITHUB_OUTPUT"
66+ else
67+ echo "latest=true" >> "$GITHUB_OUTPUT"
68+ fi
4969
50- - name : Version Packages
51- if : steps.release.outputs.has_changesets == 'true'
52- run : pnpm run changeset:version
53-
54- - name : Detect Versioning Changes
55- if : steps.release.outputs.has_changesets == 'true'
56- id : changes
57- run : pnpm run release:detect-changes
58-
59- - name : Commit Version Updates
60- if : steps.release.outputs.has_changesets == 'true' && steps.changes.outputs.has_changes == 'true'
61- run : pnpm run release:commit-and-push
62-
63- - name : Publish Packages
64- if : steps.release.outputs.has_changesets == 'true' && steps.changes.outputs.has_changes == 'true'
70+ - name : Create Release Pull Request or Publish
71+ id : changesets
72+ uses : changesets/action@63a615b9cd06ba9a3e6d13796c7fbcb080a60a0b # v1.8.0
73+ with :
74+ version : pnpm run changeset:version
75+ publish : pnpm run changeset:publish ${{ steps.dist-tag.outputs.tag && format('--tag {0}', steps.dist-tag.outputs.tag) }}
76+ title : ' ci: Version Packages'
77+ commit : ' ci: changeset release'
78+ env :
79+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
80+ - name : Create GitHub Release
81+ if : steps.changesets.outputs.published == 'true'
82+ run : node scripts/create-github-release.mjs ${PRERELEASE_FLAG} ${LATEST_FLAG}
6583 env :
66- NPM_TAG : ${{ steps.release.outputs.npm_tag }}
67- run : pnpm changeset publish --tag "$NPM_TAG"
84+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
85+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
86+ PRERELEASE_FLAG : ${{ steps.dist-tag.outputs.prerelease == 'true' && '--prerelease' }}
87+ LATEST_FLAG : ${{ steps.dist-tag.outputs.latest == 'true' && '--latest' }}
0 commit comments