Skip to content

Commit 8de2c3e

Browse files
authored
update ci to use OIDC and trusted publishing instead of NPM tokens (#513)
1 parent fcd88a5 commit 8de2c3e

1 file changed

Lines changed: 20 additions & 14 deletions

File tree

.github/workflows/ci.yml

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,25 @@
33

44
name: Node.js CI
55
env:
6-
NODE_VERSION: "20.x"
6+
NODE_VERSION: "24"
77

88
on: [push]
99

10+
permissions:
11+
# Required for OIDC token for NPM Trusted Publishers.
12+
# See https://docs.github.com/en/actions/concepts/security/openid-connect
13+
# and https://docs.npmjs.com/trusted-publishers.
14+
id-token: write
15+
contents: read
16+
1017
jobs:
1118
lint:
1219
name: ✅ Lint
1320
runs-on: ubuntu-latest
1421
steps:
15-
- uses: actions/checkout@v4
22+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1
1623
- name: Setup Node
17-
uses: actions/setup-node@v4
24+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0
1825
with:
1926
node-version: ${{env.NODE_VERSION}}
2027
- run: npm ci
@@ -23,9 +30,9 @@ jobs:
2330
name: Unit Test
2431
runs-on: ubuntu-latest
2532
steps:
26-
- uses: actions/checkout@v4
33+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1
2734
- name: Setup Node
28-
uses: actions/setup-node@v4
35+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0
2936
with:
3037
node-version: ${{env.NODE_VERSION}}
3138
- run: npm ci
@@ -34,9 +41,9 @@ jobs:
3441
name: Type Check
3542
runs-on: ubuntu-latest
3643
steps:
37-
- uses: actions/checkout@v4
44+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1
3845
- name: Setup Node
39-
uses: actions/setup-node@v4
46+
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0
4047
with:
4148
node-version: ${{env.NODE_VERSION}}
4249
- run: npm ci
@@ -49,8 +56,8 @@ jobs:
4956
needs: [lint, typeCheck, test]
5057
runs-on: ubuntu-latest
5158
steps:
52-
- uses: actions/checkout@v4
53-
- uses: actions/setup-node@v4
59+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1
60+
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0
5461
with:
5562
node-version: ${{env.NODE_VERSION}}
5663
- run: npm ci
@@ -70,13 +77,12 @@ jobs:
7077
needs: [lint, typeCheck, test]
7178
runs-on: ubuntu-latest
7279
steps:
73-
- uses: actions/checkout@v4
74-
- uses: actions/setup-node@v4
80+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 #4.3.1
81+
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 #v6.2.0
7582
with:
7683
node-version: ${{env.NODE_VERSION}}
7784
registry-url: https://registry.npmjs.org/
85+
package-manager-cache: false # Do not cache when publishing to prevent cache pollution attacks
7886
- run: npm ci
7987
- run: npm run build
80-
- run: npm publish
81-
env:
82-
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
88+
- run: npm publish --provenance # Provenance required for Trusted Publishers

0 commit comments

Comments
 (0)