Skip to content

Commit 8db1d8d

Browse files
authored
DX-2278: update release to use npm OIDC (#149)
* fix: update release to use npm OIDC https://docs.npmjs.com/trusted-publishers * fix: add workflow_call to release wf triggers and use release wf in test wf * fix: add ci.yml to route release/tests with oidc permissions * fix: repository is required for provenance flag in release * fix: simplify diff * fix: remove unnecessary --no-git-checks flag from npm publish command
1 parent dbed170 commit 8db1d8d

File tree

4 files changed

+55
-28
lines changed

4 files changed

+55
-28
lines changed

.github/workflows/ci.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: CI
2+
3+
on:
4+
pull_request:
5+
release:
6+
types:
7+
- published
8+
schedule:
9+
- cron: "0 0 * * *" # daily
10+
11+
permissions:
12+
id-token: write
13+
contents: read
14+
15+
jobs:
16+
tests:
17+
if: github.event_name != 'release'
18+
uses: ./.github/workflows/tests.yaml
19+
secrets: inherit
20+
21+
release:
22+
if: github.event_name == 'release'
23+
uses: ./.github/workflows/release.yml
24+
with:
25+
prerelease: ${{ github.event.release.prerelease }}
26+
secrets: inherit

.github/workflows/release.yml

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
11
name: Release
22

33
on:
4-
release:
5-
types:
6-
- published
4+
workflow_call:
5+
inputs:
6+
prerelease:
7+
description: "Whether this is a prerelease"
8+
type: boolean
9+
required: true
710

811
jobs:
912
release:
1013
name: Release
1114
runs-on: ubuntu-latest
1215
steps:
1316
- name: Checkout Repo
14-
uses: actions/checkout@v3
17+
uses: actions/checkout@v4
1518

1619
- name: Set env
1720
run: echo "VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
1821

1922
- name: Setup Node
20-
uses: actions/setup-node@v2
23+
uses: actions/setup-node@v4
2124
with:
22-
node-version: 18
25+
node-version: 24
26+
registry-url: https://registry.npmjs.org
2327

2428
- name: Set package version
2529
run: echo $(jq --arg v "${{ env.VERSION }}" '(.version) = $v' package.json) > package.json
@@ -35,13 +39,10 @@ jobs:
3539
- name: Build
3640
run: bun run build
3741

38-
- name: Add npm token
39-
run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" > .npmrc
40-
41-
- name: Publish release candidate
42-
if: "github.event.release.prerelease"
43-
run: npm publish --access public --tag=canary --no-git-checks
42+
- name: Publish prerelease
43+
if: inputs.prerelease
44+
run: npm publish --access public --tag=canary --provenance --no-git-checks
4445

45-
- name: Publish
46-
if: "!github.event.release.prerelease"
47-
run: npm publish --access public --no-git-checks
46+
- name: Publish stable release
47+
if: ${{ !inputs.prerelease }}
48+
run: npm publish --access public --provenance --no-git-checks

.github/workflows/tests.yaml

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
name: Tests
22
on:
3-
pull_request:
4-
schedule:
5-
- cron: "0 0 * * *" # daily
3+
workflow_call:
64

75
env:
86
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
@@ -214,9 +212,9 @@ jobs:
214212
- name: Test
215213
run: bun test ci.test.ts
216214
working-directory: examples/nextjs
217-
215+
218216
release:
219-
name: Release
217+
name: Release Canary
220218
concurrency: release
221219
needs:
222220
- cloudflare-workers-local
@@ -227,16 +225,17 @@ jobs:
227225
version: ${{ steps.version.outputs.version }}
228226
steps:
229227
- name: Checkout Repo
230-
uses: actions/checkout@v3
228+
uses: actions/checkout@v4
231229

232230
- name: Get version
233231
id: version
234232
run: echo "::set-output name=version::v0.0.0-ci.${GITHUB_SHA}-$(date +%Y%m%d%H%M%S)"
235233

236234
- name: Setup Node
237-
uses: actions/setup-node@v2
235+
uses: actions/setup-node@v4
238236
with:
239-
node-version: 20
237+
node-version: 24
238+
registry-url: https://registry.npmjs.org
240239

241240
- name: Set package version
242241
run: echo $(jq --arg v "${{ steps.version.outputs.version }}" '(.version) = $v' package.json) > package.json
@@ -252,11 +251,8 @@ jobs:
252251
- name: Build
253252
run: bun run build
254253

255-
- name: Add npm token
256-
run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" > .npmrc
257-
258-
- name: Publish release candidate
259-
run: npm publish --access public --tag=ci
254+
- name: Publish CI canary
255+
run: npm publish --access public --tag=ci --provenance
260256

261257
- name: Sleep
262258
run: sleep 5

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
"files": [
77
"dist"
88
],
9+
"repository": {
10+
"type": "git",
11+
"url": "git@github.com:upstash/ratelimit-js.git"
12+
},
913
"scripts": {
1014
"build": "tsup",
1115
"test": "bun test src --coverage",

0 commit comments

Comments
 (0)