Skip to content

Commit 0964e97

Browse files
authored
[WORKFLOW] npmjs publishing OIDC permission (#2135)
* added id-token write permission * cleanup npmjs token input * test workflow * package repo url updates * remove old publish workflow * removed test trigger branch
1 parent c1a6bde commit 0964e97

File tree

15 files changed

+256
-182
lines changed

15 files changed

+256
-182
lines changed

.github/workflows/cd.packages-stable.create-release-drafts.yml

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ jobs:
1919

2020
runs-on: ubuntu-22.04
2121

22-
permissions: write-all
22+
permissions:
23+
contents: write
2324

2425
steps:
2526
- uses: actions/checkout@v4
@@ -49,7 +50,9 @@ jobs:
4950

5051
runs-on: ubuntu-22.04
5152

52-
permissions: write-all
53+
permissions:
54+
contents: write
55+
5356

5457
steps:
5558
- uses: actions/checkout@v4
@@ -89,7 +92,10 @@ jobs:
8992

9093
runs-on: ubuntu-22.04
9194

92-
permissions: write-all
95+
permissions:
96+
contents: write
97+
id-token: write
98+
9399

94100
steps:
95101
- uses: actions/checkout@v4
@@ -121,7 +127,6 @@ jobs:
121127
tasks/npm-publish.sh packages/metadata/ latest
122128
env:
123129
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
124-
NPMJS_TOKEN: ${{ secrets.NPMJS_TOKEN }}
125130

126131
check-sdk-core-version:
127132
name: Checking if SDK-Core should be published
@@ -166,7 +171,8 @@ jobs:
166171
check-sdk-core-version,
167172
]
168173

169-
permissions: write-all
174+
permissions:
175+
contents: write
170176

171177
steps:
172178
- uses: actions/checkout@v4
@@ -193,7 +199,8 @@ jobs:
193199

194200
runs-on: ubuntu-22.04
195201

196-
permissions: write-all
202+
permissions:
203+
contents: write
197204

198205
steps:
199206
- uses: actions/checkout@v4

.github/workflows/ci.canary.yml renamed to .github/workflows/handler.publish-dev-release-packages.yml

Lines changed: 214 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
1-
name: CI | Canary (Dev)
1+
name: Publisher & CI
22

33
on:
44
push:
55
branches: ["dev"]
66
paths:
7-
- ".github/workflows/ci.canary.yml"
7+
- ".github/workflows/handler.publish-dev-release-packages.yml"
88
- ".github/workflows/call.*.yml"
99
- "package.json"
1010
- "yarn.lock"
1111
- "packages/**"
1212
- "codecov.yml"
1313
# - "**.md" are commented out because docs updates should go into the packages
14+
release:
15+
types: [published]
1416

1517
jobs:
1618
check:
1719
name: Checking what packages need to be built
20+
if: github.event_name == 'push'
1821

1922
runs-on: ubuntu-22.04
2023

@@ -139,7 +142,7 @@ jobs:
139142
name: All packages tested (Dev Branch)
140143
runs-on: ubuntu-22.04
141144
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-not-requiring-successful-dependent-jobs
142-
if: ${{ always() }}
145+
if: ${{ always() && github.event_name == 'push' }}
143146

144147
needs: [ test-spec-haskell
145148
, test-solidity-semantic-money
@@ -175,9 +178,12 @@ jobs:
175178
176179
publish-npm-packages:
177180
name: Publish canary packages to registries
181+
# Only run this if we are in a push event (canary flow)
182+
if: github.event_name == 'push'
178183

179-
permissions: write-all
180-
184+
permissions:
185+
contents: read
186+
id-token: write
181187
needs: [all-packages-tested]
182188

183189
runs-on: ubuntu-22.04
@@ -189,6 +195,11 @@ jobs:
189195
steps:
190196
- uses: actions/checkout@v4
191197

198+
- uses: actions/setup-node@v4
199+
with:
200+
node-version: '24'
201+
registry-url: 'https://registry.npmjs.org'
202+
192203
- uses: DeterminateSystems/nix-installer-action@v13
193204

194205
- name: Install dependencies
@@ -208,17 +219,19 @@ jobs:
208219
yarn lerna version prerelease --yes --no-git-tag-version --preid "${preId}"
209220
210221
- name: Publish to npm
222+
shell: bash
211223
run: |
212224
tasks/npm-publish.sh packages/ethereum-contracts/ dev --verbose
213225
tasks/npm-publish.sh packages/sdk-core/ dev --verbose
214226
tasks/npm-publish.sh packages/sdk-redux/ dev --verbose
215227
tasks/npm-publish.sh packages/metadata/ dev --verbose
216228
env:
217229
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
218-
NPMJS_TOKEN: ${{ secrets.NPMJS_TOKEN }}
219230

220231
publish-sdk-html-docs:
221232
name: Publish canary HTML docs
233+
# Only run this if we are in a push event
234+
if: github.event_name == 'push'
222235

223236
needs: [all-packages-tested]
224237

@@ -273,3 +286,198 @@ jobs:
273286
s3_uri: ${{ format('{0}sdk-redux@dev', secrets.SITE_DEPLOYER_AWS_S3_DOCS_URI) }}
274287
cloudfront_distribution_id: E3JEO5R14CT8IH
275288

289+
upgrade-contracts:
290+
name: Upgrade ethereum-contracts on canary testnet (protocol release version "canary")
291+
292+
if: false # disable this for now
293+
294+
needs: [all-packages-tested]
295+
296+
runs-on: ubuntu-22.04
297+
298+
strategy:
299+
fail-fast: false
300+
matrix:
301+
network: [optimism-sepolia]
302+
303+
defaults:
304+
run:
305+
shell: nix develop .#ci-default -c bash -xe {0}
306+
307+
steps:
308+
- uses: actions/checkout@v4
309+
310+
- uses: DeterminateSystems/nix-installer-action@v13
311+
312+
- name: Build
313+
run: |
314+
yarn install --frozen-lockfile
315+
yarn build
316+
317+
- name: Deploy to ${{ matrix.network }}
318+
run: |
319+
cd packages/ethereum-contracts
320+
npx truffle exec --network ${{ matrix.network }} ops-scripts/deploy-test-environment.js
321+
npx truffle exec --network ${{ matrix.network }} ops-scripts/info-print-contract-addresses.js : addresses.vars
322+
tasks/etherscan-verify-framework.sh ${{ matrix.network }} addresses.vars
323+
env:
324+
RELEASE_VERSION: canary
325+
OPTIMISM_SEPOLIA_MNEMONIC: ${{ secrets.BUILD_AGENT_MNEMONIC }}
326+
OPTIMISM_SEPOLIA_PROVIDER_URL: ${{ secrets.OPTIMISM_SEPOLIA_PROVIDER_URL }}
327+
328+
publish-release:
329+
name: Publish release package
330+
if: github.event_name == 'release'
331+
332+
permissions:
333+
contents: read
334+
id-token: write
335+
336+
runs-on: ubuntu-22.04
337+
338+
defaults:
339+
run:
340+
shell: nix develop .#ci-default -c bash -xe {0}
341+
342+
steps:
343+
- uses: actions/checkout@v4
344+
345+
- uses: actions/checkout@v4
346+
with:
347+
repository: superfluid-finance/build-scripts
348+
path: build-scripts
349+
350+
- uses: DeterminateSystems/nix-installer-action@v13
351+
352+
- name: Parse Tag
353+
env:
354+
GITHUB_REF: ${{ github.ref }}
355+
run: |
356+
if echo -n "$GITHUB_REF" | grep -qE "refs/tags/ethereum-contracts@";then
357+
echo "PUBLISH_ETHEREUM_CONTRACTS=1" >> "$GITHUB_ENV"
358+
fi
359+
if echo -n "$GITHUB_REF" | grep -qE "refs/tags/sdk-core@";then
360+
echo "PUBLISH_SDK_CORE=1" >> "$GITHUB_ENV"
361+
fi
362+
if echo -n "$GITHUB_REF" | grep -qE "refs/tags/sdk-redux@";then
363+
echo "PUBLISH_SDK_REDUX=1" >> "$GITHUB_ENV"
364+
fi
365+
366+
- name: Install dependencies
367+
run: yarn install --frozen-lockfile
368+
369+
- name: Build ethereum-contracts package
370+
if: env.PUBLISH_ETHEREUM_CONTRACTS == 1
371+
run: |
372+
yarn --cwd packages/ethereum-contracts build
373+
env:
374+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
375+
376+
- name: Publish ethereum-contracts package
377+
if: env.PUBLISH_ETHEREUM_CONTRACTS == 1
378+
shell: bash
379+
run: |
380+
tasks/npm-publish.sh packages/ethereum-contracts/ latest
381+
env:
382+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
383+
384+
- name: Build sdk-core package
385+
if: env.PUBLISH_SDK_CORE == 1
386+
run: |
387+
yarn --cwd packages/sdk-core get-graphql-schema:v1
388+
yarn --cwd packages/ethereum-contracts build
389+
yarn --cwd packages/sdk-core build
390+
yarn --cwd packages/sdk-core doc:html
391+
env:
392+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
393+
394+
- name: Publish sdk-core package
395+
id: publish-sdk-core
396+
if: env.PUBLISH_SDK_CORE == 1
397+
shell: bash
398+
run: |
399+
tasks/npm-publish.sh packages/sdk-core/ latest
400+
401+
PUBLISHED_VERSION=$(jq -r .version packages/sdk-core/package.json)
402+
403+
echo "PUBLISHED_VERSION=$PUBLISHED_VERSION" >> "$GITHUB_OUTPUT"
404+
405+
# Create redirect from root
406+
mkdir sdk-core-redirect
407+
printf '<!DOCTYPE html><html><head><title>Redirecting...</title><meta charset="UTF-8"><meta http-equiv="refresh" content="0;URL=%s" /><meta http-equiv="Cache-Control" content="no-store" /></head><body><p>Redirecting to latest documentation...</p></body></html>' "https://refs.superfluid.finance/sdk-core@$PUBLISHED_VERSION" \
408+
> sdk-core-redirect/index.html
409+
env:
410+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
411+
412+
- name: Upload sdk-core HTML documentation
413+
if: env.PUBLISH_SDK_CORE == 1
414+
uses: ./build-scripts/s3cloudfront-hosting/actions/sync
415+
with:
416+
local_build_dir: packages/sdk-core/dist/docs
417+
aws_region: eu-west-2
418+
aws_access_key_id: ${{ secrets.SITE_DEPLOYER_AWS_ACCESS_KEY_ID }}
419+
aws_secret_access_key: ${{ secrets.SITE_DEPLOYER_AWS_SECRET_ACCESS_KEY }}
420+
s3_uri: ${{ format('{0}sdk-core@{1}', secrets.SITE_DEPLOYER_AWS_S3_DOCS_URI, steps.publish-sdk-core.outputs.PUBLISHED_VERSION) }}
421+
cloudfront_distribution_id: E3JEO5R14CT8IH
422+
423+
- name: Upload sdk-core latest documentation redirect
424+
if: env.PUBLISH_SDK_CORE == 1
425+
uses: ./build-scripts/s3cloudfront-hosting/actions/sync
426+
with:
427+
local_build_dir: sdk-core-redirect
428+
aws_region: eu-west-2
429+
aws_access_key_id: ${{ secrets.SITE_DEPLOYER_AWS_ACCESS_KEY_ID }}
430+
aws_secret_access_key: ${{ secrets.SITE_DEPLOYER_AWS_SECRET_ACCESS_KEY }}
431+
s3_uri: ${{ format('{0}sdk-core', secrets.SITE_DEPLOYER_AWS_S3_DOCS_URI) }}
432+
cloudfront_distribution_id: E3JEO5R14CT8IH
433+
434+
- name: Build sdk-redux package
435+
if: env.PUBLISH_SDK_REDUX == 1
436+
run: |
437+
yarn --cwd packages/ethereum-contracts build
438+
yarn --cwd packages/sdk-core get-graphql-schema:v1
439+
yarn --cwd packages/sdk-core build
440+
yarn --cwd packages/sdk-redux build
441+
yarn --cwd packages/sdk-redux doc:html
442+
env:
443+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
444+
445+
- name: Publish sdk-redux package
446+
id: publish-sdk-redux
447+
if: env.PUBLISH_SDK_REDUX == 1
448+
shell: bash
449+
run: |
450+
tasks/npm-publish.sh packages/sdk-redux/ latest
451+
452+
PUBLISHED_VERSION=$(jq -r .version packages/sdk-redux/package.json)
453+
454+
echo "PUBLISHED_VERSION=$PUBLISHED_VERSION" >> "$GITHUB_OUTPUT"
455+
456+
# Create redirect from root
457+
mkdir sdk-redux-redirect
458+
printf '<!DOCTYPE html><html><head><title>Redirecting...</title><meta charset="UTF-8"><meta http-equiv="refresh" content="0;URL=%s" /><meta http-equiv="Cache-Control" content="no-store" /></head><body><p>Redirecting to latest documentation...</p></body></html>' "https://refs.superfluid.finance/sdk-redux@$PUBLISHED_VERSION" \
459+
> sdk-redux-redirect/index.html
460+
env:
461+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
462+
463+
- name: Upload sdk-redux HTML documentation
464+
if: env.PUBLISH_SDK_REDUX == 1
465+
uses: ./build-scripts/s3cloudfront-hosting/actions/sync
466+
with:
467+
local_build_dir: packages/sdk-redux/dist/docs
468+
aws_region: eu-west-2
469+
aws_access_key_id: ${{ secrets.SITE_DEPLOYER_AWS_ACCESS_KEY_ID }}
470+
aws_secret_access_key: ${{ secrets.SITE_DEPLOYER_AWS_SECRET_ACCESS_KEY }}
471+
s3_uri: ${{ format('{0}sdk-redux@{1}', secrets.SITE_DEPLOYER_AWS_S3_DOCS_URI, steps.publish-sdk-redux.outputs.PUBLISHED_VERSION) }}
472+
cloudfront_distribution_id: E3JEO5R14CT8IH
473+
474+
- name: Upload sdk-redux latest documentation redirect
475+
if: env.PUBLISH_SDK_REDUX == 1
476+
uses: ./build-scripts/s3cloudfront-hosting/actions/sync
477+
with:
478+
local_build_dir: sdk-redux-redirect
479+
aws_region: eu-west-2
480+
aws_access_key_id: ${{ secrets.SITE_DEPLOYER_AWS_ACCESS_KEY_ID }}
481+
aws_secret_access_key: ${{ secrets.SITE_DEPLOYER_AWS_SECRET_ACCESS_KEY }}
482+
s3_uri: ${{ format('{0}sdk-redux', secrets.SITE_DEPLOYER_AWS_S3_DOCS_URI) }}
483+
cloudfront_distribution_id: E3JEO5R14CT8IH

0 commit comments

Comments
 (0)