Skip to content

Deploy NPM Package

Deploy NPM Package #35

Workflow file for this run

name: Deploy NPM Package
on:
workflow_dispatch:
inputs:
version:
description: "Version to publish (e.g., 1.0.0)"
default: "1.0.0"
required: true
permissions:
id-token: write # Required for OIDC
contents: read
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write # Required for npm OIDC trusted publishing
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9.11.0
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: lts/Iron
cache: "pnpm"
registry-url: "https://registry.npmjs.org"
- name: Upgrade npm for OIDC support
run: npm install -g npm@11.7.0
- name: Setup Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
target: wasm32-unknown-unknown
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1.4.0
- name: Install dependencies
run: pnpm install -r --frozen-lockfile
# Web SDK depends on ERC-4337 contracts for WASM build
- name: Install ERC-4337 contract dependencies
run: forge soldeer install
working-directory: packages/erc4337-contracts
- name: Build ERC-4337 contracts
run: forge build
working-directory: packages/erc4337-contracts
- name: Build the package
run: pnpm nx build sdk-4337
- name: Build the web SDK package
run: pnpm nx build web-sdk
- name: Prepare package.json
working-directory: packages/sdk-4337
run: node prepare-package.mjs
env:
INPUT_VERSION: ${{ github.event.inputs.version }}
- name: Prepare web SDK package.json
working-directory: packages/sdk-platforms/web
run: node prepare-package.mjs
env:
INPUT_VERSION: ${{ github.event.inputs.version }}
- name: Determine npm publish tag
id: npm_tag
run: |
VERSION="${{ github.event.inputs.version }}"
if [[ "$VERSION" =~ -([a-zA-Z0-9]+) ]]; then
TAG="${BASH_REMATCH[1]}"
else
TAG="latest"
fi
echo "tag=$TAG" >> $GITHUB_OUTPUT
- name: Publish SDK to NPM
working-directory: packages/sdk-4337
run: npm publish --access public --tag ${{ steps.npm_tag.outputs.tag }} --provenance
- name: Publish web SDK to NPM
working-directory: packages/sdk-platforms/web
run: npm publish --access public --tag ${{ steps.npm_tag.outputs.tag }} --provenance
- name: Create .npmrc for GitHub Packages
run: |
echo "@matter-labs:registry=https://npm.pkg.github.com" > ~/.npmrc
echo "@zksync-sso:registry=https://npm.pkg.github.com" >> ~/.npmrc
echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> ~/.npmrc
- name: Publish SDK to GitHub Packages
working-directory: packages/sdk-4337
run: |
# Update package name for GitHub Packages to be scoped to the organization
npm pkg set name="@matter-labs/zksync-sso"
npm publish --registry=https://npm.pkg.github.com --tag ${{ steps.npm_tag.outputs.tag }}
- name: Publish web SDK to GitHub Packages
working-directory: packages/sdk-platforms/web
run: |
# Update package name for GitHub Packages to be scoped to the organization
npm pkg set name="@matter-labs/zksync-sso-web-sdk"
npm publish --registry=https://npm.pkg.github.com --tag ${{ steps.npm_tag.outputs.tag }}