@@ -2,11 +2,63 @@ name: Release
22on :
33 push :
44 tags :
5- - ' v[0-9]+.[0-9]+.[0-9]+'
5+ - ' v*' # Triggers on any tag starting with v (e.g. v1.0.0, v1.0.0-beta.1)
6+
7+ permissions :
8+ id-token : write # Required for OIDC (NPM Trusted Publishing)
9+ contents : write # Required for pushing docs and creating github releases
10+
611jobs :
7- release :
12+ # ------------------------------------------------------------------
13+ # ALPHA RELEASE JOB
14+ # Runs only if the tag contains '-alpha'
15+ # ------------------------------------------------------------------
16+ publish-alpha :
17+ name : NPM Publish (alpha)
18+ runs-on : ubuntu-latest
19+ if : contains(github.ref, '-alpha')
20+ steps :
21+ - uses : actions/checkout@v4
22+ - uses : actions/setup-node@v6
23+ with :
24+ node-version : ' 24'
25+ - run : npm install --global npm@11
26+ - run : npm ci
27+ - run : npm test
28+ - uses : JS-DevTools/npm-publish@v4
29+ with :
30+ access : ' public'
31+ tag : ' alpha'
32+
33+ # ------------------------------------------------------------------
34+ # BETA RELEASE JOB
35+ # Runs only if the tag contains '-beta'
36+ # ------------------------------------------------------------------
37+ publish-beta :
38+ name : NPM Publish (beta)
39+ runs-on : ubuntu-latest
40+ if : contains(github.ref, '-beta')
41+ steps :
42+ - uses : actions/checkout@v6
43+ - uses : actions/setup-node@v6
44+ with :
45+ node-version : ' 24'
46+ - run : npm install --global npm@11
47+ - run : npm ci
48+ - run : npm test
49+ - uses : JS-DevTools/npm-publish@v4
50+ with :
51+ access : ' public'
52+ tag : ' beta'
53+
54+ # ------------------------------------------------------------------
55+ # PRODUCTION JOBS
56+ # Run only if the tag does NOT contain a hyphen (e.g. v1.0.0)
57+ # ------------------------------------------------------------------
58+ release-production :
859 name : Github Release
960 runs-on : ubuntu-latest
61+ if : ${{ !contains(github.ref, '-') }}
1062 steps :
1163 - uses : actions/checkout@v6
1264 - uses : docker://antonyurchenko/git-release:v6
@@ -16,17 +68,36 @@ jobs:
1668 PRE_RELEASE : ' false'
1769 CHANGELOG_FILE : ' CHANGELOG.md'
1870 ALLOW_EMPTY_CHANGELOG : ' false'
19- publish :
20- name : NPM Publish
71+ docs-production :
72+ name : Documentation
73+ runs-on : ubuntu-latest
74+ if : ${{ !contains(github.ref, '-') }}
75+ steps :
76+ - uses : actions/checkout@v6
77+ - uses : actions/setup-node@v6
78+ with :
79+ node-version : ' 24'
80+ - run : npm install --global npm@11
81+ - run : npm ci
82+ - run : npm run docs
83+ - uses : devops-infra/action-commit-push@v1
84+ with :
85+ github_token : ${{ secrets.GITHUB_TOKEN }}
86+ commit_prefix : ' [DOCS] '
87+ commit_message : ${{ github.ref_name }}
88+ target_branch : ' master'
89+ publish-production :
90+ name : NPM Publish (latest)
2191 runs-on : ubuntu-latest
92+ if : ${{ !contains(github.ref, '-') }}
2293 steps :
2394 - uses : actions/checkout@v6
2495 - uses : actions/setup-node@v6
2596 with :
2697 node-version : ' 24'
2798 - run : npm install --global npm@11
2899 - run : npm ci
100+ - run : npm test
29101 - uses : JS-DevTools/npm-publish@v4
30102 with :
31- token : ${{ secrets.NPM_TOKEN }}
32103 access : ' public'
0 commit comments