0.1.78 (#33) #242
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: lightning-js | |
| MACOSX_DEPLOYMENT_TARGET: '10.13' | |
| CARGO_INCREMENTAL: '1' | |
| RUST_VERSION: '1.85' | |
| permissions: | |
| contents: write | |
| id-token: write | |
| 'on': | |
| push: | |
| branches: | |
| - main | |
| tags-ignore: | |
| - '**' | |
| paths-ignore: | |
| - '**/*.md' | |
| - LICENSE | |
| - '**/*.gitignore' | |
| - .editorconfig | |
| - docs/** | |
| pull_request: null | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: 'yarn' | |
| - name: Install | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy, rustfmt | |
| - name: Install dependencies | |
| run: yarn install | |
| - name: Oxlint | |
| run: yarn lint | |
| - name: Cargo fmt | |
| run: cargo fmt -- --check | |
| - name: Clippy | |
| run: cargo clippy | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| settings: | |
| - host: macos-latest | |
| target: x86_64-apple-darwin | |
| build: yarn build --target x86_64-apple-darwin | |
| - host: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| build: yarn build --target x86_64-pc-windows-msvc | |
| - host: windows-latest | |
| target: i686-pc-windows-msvc | |
| build: yarn build --target i686-pc-windows-msvc | |
| - host: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian | |
| build: | | |
| rustup install $RUST_VERSION | |
| rustup default $RUST_VERSION | |
| rustup target add x86_64-unknown-linux-gnu | |
| yarn 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: | | |
| export CC=gcc | |
| export CXX=g++ | |
| rustup install $RUST_VERSION | |
| rustup default $RUST_VERSION | |
| rustup target add x86_64-unknown-linux-musl | |
| yarn build --target x86_64-unknown-linux-musl | |
| - host: macos-latest | |
| target: aarch64-apple-darwin | |
| build: yarn 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: | | |
| set -e | |
| apt-get update | |
| apt-get install -y gcc-aarch64-linux-gnu libc6-dev-arm64-cross | |
| export CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc | |
| export CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++ | |
| export AR_aarch64_unknown_linux_gnu=aarch64-linux-gnu-ar | |
| export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc | |
| export CFLAGS_aarch64_unknown_linux_gnu="-DAT_HWCAP2=26" | |
| rustup install $RUST_VERSION | |
| rustup default $RUST_VERSION | |
| rustup target add aarch64-unknown-linux-gnu | |
| yarn build --target aarch64-unknown-linux-gnu | |
| - host: ubuntu-latest | |
| target: aarch64-linux-android | |
| build: | | |
| export ANDROID_NDK_HOME="${ANDROID_NDK_ROOT:-$ANDROID_NDK_LATEST_HOME}" | |
| export TOOLCHAIN="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64" | |
| export CC_aarch64_linux_android="$TOOLCHAIN/bin/aarch64-linux-android28-clang" | |
| export CXX_aarch64_linux_android="$TOOLCHAIN/bin/aarch64-linux-android28-clang++" | |
| export AR_aarch64_linux_android="$TOOLCHAIN/bin/llvm-ar" | |
| export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$TOOLCHAIN/bin/aarch64-linux-android28-clang" | |
| yarn build --target aarch64-linux-android | |
| - host: ubuntu-latest | |
| target: aarch64-unknown-linux-musl | |
| docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
| build: | | |
| set -e | |
| export CC=aarch64-linux-musl-gcc | |
| export CXX=aarch64-linux-musl-g++ | |
| rustup install $RUST_VERSION | |
| rustup default $RUST_VERSION | |
| rustup target add aarch64-unknown-linux-musl | |
| yarn build --target aarch64-unknown-linux-musl | |
| - host: windows-latest | |
| target: aarch64-pc-windows-msvc | |
| build: yarn build --target aarch64-pc-windows-msvc | |
| name: stable - ${{ matrix.settings.target }} - node@18 | |
| runs-on: ${{ matrix.settings.host }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| if: ${{ !matrix.settings.docker }} | |
| with: | |
| node-version: 22 | |
| cache: yarn | |
| - name: Install NASM | |
| if: runner.os == 'Windows' | |
| run: choco install nasm | |
| - name: Install | |
| uses: dtolnay/rust-toolchain@stable | |
| if: ${{ !matrix.settings.docker }} | |
| with: | |
| toolchain: ${{ env.RUST_VERSION }} | |
| 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 }} | |
| - name: Install dependencies | |
| run: yarn install | |
| - name: Build in docker | |
| if: ${{ matrix.settings.docker }} | |
| env: | |
| BUILD_SCRIPT: ${{ matrix.settings.build }} | |
| run: | | |
| printf '%s\n' "$BUILD_SCRIPT" > /tmp/build.sh | |
| docker run --rm \ | |
| --user 0:0 \ | |
| -e RUST_VERSION=${{ env.RUST_VERSION }} \ | |
| -v /tmp/build.sh:/tmp/build.sh \ | |
| -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 \ | |
| ${{ matrix.settings.docker }} \ | |
| sh /tmp/build.sh | |
| - 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 | |
| publish: | |
| name: Publish | |
| runs-on: ubuntu-latest | |
| needs: | |
| - lint | |
| - build | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: yarn | |
| - name: Install dependencies | |
| run: yarn install | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Move artifacts | |
| run: yarn artifacts | |
| - name: List packages | |
| run: ls -R ./npm | |
| shell: bash | |
| - name: Publish | |
| run: | | |
| npm config set provenance true | |
| if git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$"; | |
| then | |
| echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
| npm publish --access public | |
| elif git log -1 --pretty=%B | 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 }} |