Publish ES Packages from refs/heads/master under @nightly tag. #1071
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |