Skip to content

Publish ES Packages from refs/heads/master under @nightly tag. #1071

Publish ES Packages from refs/heads/master under @nightly tag.

Publish ES Packages from refs/heads/master under @nightly tag. #1071

name: Publish Noir ES Packages
on:
workflow_dispatch:
inputs:
noir-ref:
description: The noir reference to checkout
required: false
default: "master"
npm-tag:
description: Repository Tag to publish under
required: false
default: "nightly"
run-name: Publish ES Packages from ${{ inputs.noir-ref }} under @${{ inputs.npm-tag }} tag.
permissions: {}
# Authenticate cargo-binstall's GitHub API requests (run by `just build-package`
# via install-js-tools). Unauthenticated they hit GitHub's 60 req/hour limit, get
# 403, and binstall falls back to compiling the wasm toolchain from source —
# turning a ~30s step into minutes. A valid token raises the limit to 5000/hour;
# it needs no permission scopes for this (only public release metadata is read).
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
build-noirc_abi_wasm:
runs-on: ubuntu-22.04
permissions:
contents: read
steps:
- name: Checkout Noir repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ inputs.noir-ref }}
- name: Setup toolchain
uses: dtolnay/rust-toolchain@1.89.0
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
key: noirc-abi
save-if: false
- name: Install Yarn dependencies
uses: ./.github/actions/setup
- uses: taiki-e/install-action@just
- name: Build noirc_abi
run: just build-package @noir-lang/noirc_abi
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: noirc_abi_wasm
path: |
./tooling/noirc_abi_wasm/nodejs
./tooling/noirc_abi_wasm/web
retention-days: 10
build-noir_wasm:
runs-on: ubuntu-22.04
permissions:
contents: read
steps:
- name: Checkout sources
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ inputs.noir-ref }}
- name: Setup toolchain
uses: dtolnay/rust-toolchain@1.89.0
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
key: noir-wasm
save-if: false
- uses: taiki-e/install-action@just
- name: Install Yarn dependencies
uses: ./.github/actions/setup
- name: Build noir_js_types
run: just build-package @noir-lang/types
- name: Build noir_wasm
run: just build-package @noir-lang/noir_wasm
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: noir_wasm
path: |
./compiler/wasm/dist
./compiler/wasm/build
retention-days: 3
build-acvm_js:
runs-on: ubuntu-22.04
permissions:
contents: read
steps:
- name: Checkout sources
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ inputs.noir-ref }}
- name: Setup toolchain
uses: dtolnay/rust-toolchain@1.89.0
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2
with:
key: acvm-js
save-if: false
- name: Install Yarn dependencies
uses: ./.github/actions/setup
- uses: taiki-e/install-action@just
- name: Build acvm_js
run: just build-package @noir-lang/acvm_js
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: acvm-js
path: |
./acvm-repo/acvm_js/nodejs
./acvm-repo/acvm_js/web
retention-days: 3
publish-es-packages:
runs-on: ubuntu-22.04
needs: [build-acvm_js, build-noirc_abi_wasm, build-noir_wasm]
permissions:
contents: read
id-token: write # Necessary for NPM provenance: https://docs.npmjs.com/generating-provenance-statements
issues: write # To alert on failure
steps:
- name: Checkout sources
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ inputs.noir-ref }}
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: acvm-js
path: acvm-repo/acvm_js
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: noir_wasm
path: compiler/wasm
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: noirc_abi_wasm
path: tooling/noirc_abi_wasm
- name: Install Yarn dependencies
uses: ./.github/actions/setup
- name: Build ES Packages
run: yarn build:js:only
- name: Prepare nightly version
if: ${{ inputs.npm-tag != 'latest' }}
run: |
yarn nightly:version -- .${{ inputs.npm-tag }}
- name: Publish ES Packages
run: yarn publish:all --provenance --access public --tag ${{ inputs.npm-tag }}
# Raise an issue if any package failed to publish
- name: Alert on failed publish
uses: JasonEtco/create-an-issue@1b14a70e4d8dc185e5cc76d3bec9eab20257b2c5 # v2
if: ${{ failure() }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TAG: ${{ inputs.npm-tag }}
WORKFLOW_NAME: ${{ github.workflow }}
WORKFLOW_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
with:
update_existing: true
filename: .github/JS_PUBLISH_FAILED.md