chore: migrate yarn 1 to pnpm
#133
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: CI | |
| env: | |
| DEBUG: napi:* | |
| APP_NAME: blst | |
| MACOSX_DEPLOYMENT_TARGET: "10.13" | |
| permissions: | |
| contents: write | |
| id-token: write | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| settings: | |
| - host: macos-latest | |
| target: x86_64-apple-darwin | |
| build: pnpm build --target x86_64-apple-darwin | |
| - host: windows-latest | |
| build: pnpm build --target x86_64-pc-windows-msvc | |
| target: x86_64-pc-windows-msvc | |
| - host: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian | |
| build: pnpm build --target x86_64-unknown-linux-gnu | |
| - host: ubuntu-latest | |
| target: x86_64-unknown-linux-musl | |
| docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
| build: pnpm build --target x86_64-unknown-linux-musl | |
| - host: macos-latest | |
| target: aarch64-apple-darwin | |
| build: pnpm build --target aarch64-apple-darwin | |
| - host: ubuntu-latest | |
| target: aarch64-unknown-linux-gnu | |
| docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 | |
| build: pnpm build --target aarch64-unknown-linux-gnu | |
| - host: ubuntu-latest | |
| target: aarch64-unknown-linux-musl | |
| docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
| build: |- | |
| set -e && | |
| rustup target add aarch64-unknown-linux-musl && | |
| pnpm build --target aarch64-unknown-linux-musl | |
| # not sure if we will add this eventually so leaving here as reminder to turn on the build | |
| # - host: windows-latest | |
| # target: aarch64-pc-windows-msvc | |
| # build: pnpm build --target aarch64-pc-windows-msvc | |
| name: Build - ${{ matrix.settings.target }} - node@22 | |
| runs-on: ${{ matrix.settings.host }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install pnpm before setup node | |
| shell: bash | |
| run: npm install -g pnpm | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| if: ${{ !matrix.settings.docker }} | |
| with: | |
| node-version: "22.4.x" | |
| cache: pnpm | |
| - name: Install | |
| uses: dtolnay/rust-toolchain@stable | |
| if: ${{ !matrix.settings.docker }} | |
| with: | |
| toolchain: stable | |
| targets: ${{ matrix.settings.target }} | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| .cargo-cache | |
| target/ | |
| key: ${{ matrix.settings.target }}-cargo-${{ matrix.settings.host }} | |
| - uses: goto-bus-stop/setup-zig@v2 | |
| if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' || matrix.settings.target == 'armv7-unknown-linux-musleabihf' }} | |
| with: | |
| version: 0.11.0 | |
| - name: Setup toolchain | |
| run: ${{ matrix.settings.setup }} | |
| if: ${{ matrix.settings.setup }} | |
| shell: bash | |
| - name: Install pnpm before setup node | |
| shell: bash | |
| run: npm install -g pnpm | |
| - name: Setup node x86 | |
| if: matrix.settings.target == 'i686-pc-windows-msvc' | |
| run: pnpm config set supportedArchitectures.cpu "ia32" | |
| shell: bash | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Setup node x86 | |
| uses: actions/setup-node@v4 | |
| if: matrix.settings.target == 'i686-pc-windows-msvc' | |
| with: | |
| node-version: "22.4.x" | |
| cache: pnpm | |
| architecture: x86 | |
| - name: Build in docker | |
| uses: addnab/docker-run-action@v3 | |
| if: ${{ matrix.settings.docker }} | |
| with: | |
| image: ${{ matrix.settings.docker }} | |
| options: "--user 0:0 -v ${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v ${{ github.workspace }}:/build -w /build" | |
| run: ${{ matrix.settings.build }} | |
| - name: Build | |
| run: ${{ matrix.settings.build }} | |
| if: ${{ !matrix.settings.docker }} | |
| shell: bash | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: bindings-${{ matrix.settings.target }} | |
| path: ${{ env.APP_NAME }}.*.node | |
| if-no-files-found: error | |
| test-macOS-windows-binding: | |
| name: Test - ${{ matrix.settings.target }} - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| settings: | |
| - host: macos-latest | |
| target: x86_64-apple-darwin | |
| - host: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| node: | |
| - "18" | |
| - "22.4.x" | |
| runs-on: ${{ matrix.settings.host }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install pnpm before setup node | |
| shell: bash | |
| run: npm install -g pnpm | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: pnpm | |
| architecture: x64 | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-${{ matrix.settings.target }} | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Test bindings | |
| run: pnpm test:unit | |
| - name: Download spec tests | |
| run: pnpm download-spec-tests | |
| - name: Spec tests | |
| run: pnpm test:spec | |
| test-linux-x64-gnu-binding: | |
| name: Test - Linux-x64-gnu - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - "18" | |
| - "22.4.x" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install pnpm before setup node | |
| shell: bash | |
| run: npm install -g pnpm | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-x86_64-unknown-linux-gnu | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Lint project | |
| run: pnpm lint | |
| - name: Run napi version | |
| run: pnpm run version | |
| - name: Ensure there are no unstaged changes | |
| run: git diff --exit-code | |
| - name: Test bindings | |
| run: pnpm test:unit | |
| - name: Download spec tests | |
| run: pnpm download-spec-tests | |
| - name: Spec tests | |
| run: pnpm test:spec | |
| test-linux-x64-gnu-binding-bun: | |
| name: Test - Linux-x64-gnu - bun@${{ matrix.bun }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| bun: | |
| - "latest" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # - name: Setup node | |
| # uses: actions/setup-node@v4 | |
| # with: | |
| # node-version: ${{ matrix.node }} | |
| # cache: pnpm | |
| # - name: Install dependencies | |
| # run: pnpm install | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ${{ matrix.bun }} | |
| - name: Install deps | |
| run: bun install --frozen-lockfile | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-x86_64-unknown-linux-gnu | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Lint project | |
| run: bun run --bun lint | |
| - name: Run napi version | |
| run: bun run --bun version | |
| - name: Ensure there are no unstaged changes | |
| run: git diff --exit-code | |
| - name: Test bindings | |
| run: bun run --bun test:unit | |
| - name: Download spec tests | |
| run: bun run --bun download-spec-tests | |
| - name: Spec tests | |
| run: bun run --bun test:spec | |
| test-linux-x64-musl-binding: | |
| name: Test - x86_64-unknown-linux-musl - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - "18" | |
| - 22.4 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install pnpm before setup node | |
| shell: bash | |
| run: npm install -g pnpm | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: | | |
| pnpm config set supportedArchitectures.libc "musl" | |
| pnpm install | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-x86_64-unknown-linux-musl | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Test bindings | |
| uses: addnab/docker-run-action@v3 | |
| with: | |
| image: node:${{ matrix.node }}-alpine | |
| options: "--platform linux/amd64 -v ${{ github.workspace }}:/build -w /build" | |
| run: | | |
| set -e | |
| pnpm test:unit | |
| pnpm download-spec-tests | |
| pnpm test:spec | |
| ls -la | |
| test-linux-aarch64-gnu-binding: | |
| name: Test - aarch64-unknown-linux-gnu - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - "18" | |
| - 22.4 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-aarch64-unknown-linux-gnu | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Install dependencies | |
| run: | | |
| pnpm config set supportedArchitectures.cpu "arm64" | |
| pnpm config set supportedArchitectures.libc "glibc" | |
| pnpm install | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: arm64 | |
| - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
| - name: Setup and run tests | |
| uses: addnab/docker-run-action@v3 | |
| with: | |
| image: node:${{ matrix.node }}-slim | |
| options: "--platform linux/arm64 -v ${{ github.workspace }}:/build -w /build" | |
| run: | | |
| set -e | |
| pnpm test:unit | |
| pnpm download-spec-tests | |
| pnpm test:spec | |
| ls -la | |
| test-linux-aarch64-musl-binding: | |
| name: Test - aarch64-unknown-linux-musl - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - "18" | |
| - 22.4 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: bindings-aarch64-unknown-linux-musl | |
| path: . | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Install dependencies | |
| run: | | |
| pnpm config set supportedArchitectures.cpu "arm64" | |
| pnpm config set supportedArchitectures.libc "musl" | |
| pnpm install | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: arm64 | |
| - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
| - name: Setup and run tests | |
| uses: addnab/docker-run-action@v3 | |
| with: | |
| image: node:${{ matrix.node }}-alpine | |
| options: "--platform linux/arm64 -v ${{ github.workspace }}:/build -w /build" | |
| run: | | |
| set -e | |
| pnpm test:unit | |
| pnpm download-spec-tests | |
| pnpm test:spec | |
| ls -la | |
| publish: | |
| if: github.event_name != 'pull_request' && github.ref == 'refs/heads/master' | |
| name: Publish | |
| runs-on: ubuntu-latest | |
| needs: | |
| - test-macOS-windows-binding | |
| - test-linux-x64-gnu-binding | |
| - test-linux-x64-gnu-binding-bun | |
| - test-linux-x64-musl-binding | |
| - test-linux-aarch64-gnu-binding | |
| - test-linux-aarch64-musl-binding | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install pnpm before setup node | |
| shell: bash | |
| run: npm install -g pnpm | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22.4.x" | |
| cache: pnpm | |
| - name: Create tag | |
| id: tag | |
| uses: butlerlogic/action-autotag@1.1.2 | |
| with: | |
| strategy: package | |
| tag_prefix: "v" | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Exit if no version change | |
| if: steps.tag.outputs.tagcreated == 'no' | |
| uses: actions/github-script@v3 | |
| with: | |
| script: core.setFailed('The package.json version did not change. Workflow will not create a release.') | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Move artifacts | |
| run: pnpm artifacts | |
| - name: List packages | |
| run: ls -R ./npm | |
| shell: bash | |
| - name: Publish | |
| run: | | |
| npm config set provenance true | |
| if node -e "console.log(require('./package.json').version)" | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$"; | |
| then | |
| echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
| npm publish --access public | |
| elif node -e "console.log(require('./package.json').version)" | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+"; | |
| then | |
| echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
| npm publish --tag next --access public | |
| else | |
| echo "Not a release, skipping publish" | |
| fi | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| NPM_TOKEN: ${{ secrets.NPM_TOKEN }} |