1- name : CI | Canary (Dev)
1+ name : Publisher & CI
22
33on :
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
1517jobs :
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