chore: bump up Rust crate fast_image_resize to v6 #696
Workflow file for this run
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: image | |
| SYSTEM_DEPS_DAV1D_BUILD_INTERNAL: 'always' | |
| 'on': | |
| push: | |
| branches: | |
| - main | |
| tags-ignore: | |
| - '**' | |
| paths-ignore: | |
| - '**/*.md' | |
| - LICENSE | |
| - '**/*.gitignore' | |
| - .editorconfig | |
| - docs/** | |
| - website/** | |
| pull_request: null | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| settings: | |
| - host: macos-latest | |
| target: x86_64-apple-darwin | |
| setup: | | |
| brew install meson llvm | |
| build: | | |
| export PATH="$(brew --prefix llvm)/bin:$PATH" | |
| export CC=clang | |
| export CXX=clang++ | |
| export CMAKE_BUILD_PARALLEL_LEVEL=2 | |
| clang --version | |
| yarn workspace @napi-rs/image build --target x86_64-apple-darwin --features with_simd | |
| - host: windows-latest | |
| build: | | |
| python -m pip install meson | |
| yarn workspace @napi-rs/image build --target x86_64-pc-windows-msvc --features with_simd | |
| target: x86_64-pc-windows-msvc | |
| - host: macos-latest | |
| target: aarch64-pc-windows-msvc | |
| setup: | | |
| brew update | |
| brew install meson llvm | |
| build: | | |
| export XWIN_CACHE_DIR="$(pwd)/.xwin" | |
| export XWIN_ARCH=aarch64 | |
| export PATH="$(brew --prefix llvm)/bin:$PATH" | |
| clang --version | |
| CFLAGS="-mneon /FIintrin.h" yarn workspace @napi-rs/image build -x --features with_simd --target aarch64-pc-windows-msvc | |
| - host: macos-latest | |
| setup: | | |
| brew update | |
| brew install meson llvm | |
| build: | | |
| export XWIN_CACHE_DIR="$(pwd)/.xwin" | |
| export XWIN_ARCH=x86 | |
| export CFLAGS="-mavx2 -mpclmul /FIintrin.h" | |
| export CXXFLAGS="-mavx2 -mpclmul" | |
| export CARGO_PROFILE_RELEASE_LTO="false" | |
| export PATH="$(brew --prefix llvm)/bin:$PATH" | |
| clang --version | |
| yarn workspace @napi-rs/image build -x --features with_simd --target i686-pc-windows-msvc | |
| target: i686-pc-windows-msvc | |
| - host: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| build: | | |
| CC=clang | |
| CXX=clang++ | |
| TARGET_CC=clang | |
| TARGET_CXX=clang++ | |
| yarn workspace @napi-rs/image build --features with_simd --target x86_64-unknown-linux-gnu --use-napi-cross | |
| - host: ubuntu-latest | |
| target: x86_64-unknown-linux-musl | |
| build: | | |
| sudo apt-get update | |
| sudo apt-get install -y musl-dev | |
| export BINDGEN_EXTRA_CLANG_ARGS="-I/usr/include/x86_64-linux-musl" | |
| export CFLAGS="-DLIBDEFLATE_ASSEMBLER_DOES_NOT_SUPPORT_AVX512VNNI -DLIBDEFLATE_ASSEMBLER_DOES_NOT_SUPPORT_VPCLMULQDQ" | |
| export CXXFLAGS="-DLIBDEFLATE_ASSEMBLER_DOES_NOT_SUPPORT_AVX512VNNI -DLIBDEFLATE_ASSEMBLER_DOES_NOT_SUPPORT_VPCLMULQDQ" | |
| yarn workspace @napi-rs/image build -x --target x86_64-unknown-linux-musl --features with_simd | |
| - host: macos-latest | |
| target: aarch64-apple-darwin | |
| setup: | | |
| brew update | |
| brew install meson llvm | |
| build: | | |
| export PATH="$(brew --prefix llvm)/bin:$PATH" | |
| export CMAKE_BUILD_PARALLEL_LEVEL=2 | |
| export CC=clang | |
| export CXX=clang++ | |
| export CARGO_PROFILE_RELEASE_CODEGEN_UNITS="16" | |
| export CARGO_PROFILE_RELEASE_LTO="thin" | |
| export CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER="clang" | |
| clang --version | |
| yarn workspace @napi-rs/image build --target aarch64-apple-darwin --features with_simd | |
| - host: ubuntu-latest | |
| target: aarch64-unknown-linux-gnu | |
| build: | | |
| export TARGET_CC=clang | |
| export TARGET_CXX=clang++ | |
| yarn workspace @napi-rs/image build --features with_simd --target aarch64-unknown-linux-gnu --use-napi-cross | |
| - host: ubuntu-latest | |
| target: aarch64-linux-android | |
| build: | | |
| sudo apt update | |
| sudo apt install meson -y | |
| export LDFLAGS="-fuse-ld=lld" | |
| export CC=aarch64-linux-android24-clang | |
| export CXX=aarch64-linux-android24-clang++ | |
| export CMAKE_TOOLCHAIN_FILE_aarch64_linux_android="$(pwd)/packages/binding/android-determine.cmake" | |
| yarn workspace @napi-rs/image build --target aarch64-linux-android --features with_simd | |
| - host: ubuntu-24.04-arm | |
| target: aarch64-unknown-linux-musl | |
| build: | | |
| sudo apt-get update | |
| sudo apt-get install -y musl-dev | |
| export BINDGEN_EXTRA_CLANG_ARGS="-I/usr/include/aarch64-linux-musl" | |
| yarn workspace @napi-rs/image build -x --target aarch64-unknown-linux-musl --features with_simd | |
| - host: ubuntu-latest | |
| target: wasm32-wasip1-threads | |
| setup: | | |
| wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-27/wasi-sdk-27.0-x86_64-linux.tar.gz | |
| tar -xvf wasi-sdk-27.0-x86_64-linux.tar.gz | |
| build: | | |
| export WASI_SDK_PATH="$(pwd)/wasi-sdk-27.0-x86_64-linux" | |
| export BINDGEN_EXTRA_CLANG_ARGS="--sysroot=$WASI_SDK_PATH/share/wasi-sysroot" | |
| export CMAKE_BUILD_PARALLEL_LEVEL=2 | |
| export TARGET_CXXFLAGS="--target=wasm32-wasi-threads --sysroot=$(pwd)/wasi-sdk-27.0-x86_64-linux/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj -lsetjmp" | |
| export TARGET_CFLAGS="$TARGET_CXXFLAGS" | |
| yarn workspace @napi-rs/image build --target wasm32-wasip1-threads | |
| name: stable - ${{ matrix.settings.target }} - node@22 | |
| runs-on: ${{ matrix.settings.host }} | |
| env: | |
| RUST_TARGET: ${{ matrix.settings.target }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| cache: yarn | |
| - name: Setup nasm | |
| uses: ilammy/setup-nasm@v1 | |
| - name: Install LLVM and Clang | |
| uses: KyleMayes/install-llvm-action@v2 | |
| if: ${{ matrix.settings.target == 'x86_64-unknown-linux-musl' }} | |
| with: | |
| version: '20' | |
| - name: Install cargo-xwin | |
| uses: taiki-e/install-action@v2 | |
| if: matrix.settings.target == 'i686-pc-windows-msvc' || matrix.settings.target == 'aarch64-pc-windows-msvc' | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| with: | |
| tool: cargo-xwin | |
| - uses: mlugg/setup-zig@v2 | |
| if: ${{ contains(matrix.settings.target, 'musl') }} | |
| with: | |
| version: 0.15.2 | |
| - name: Install cargo-zigbuild | |
| uses: taiki-e/install-action@v2 | |
| if: ${{ contains(matrix.settings.target, 'musl') }} | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| with: | |
| tool: cargo-zigbuild | |
| - name: Install | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| targets: ${{ matrix.settings.target }} | |
| - name: Cache cargo registry | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| .cargo-cache | |
| .xwin | |
| ~/.napi-rs | |
| target/ | |
| key: ${{ matrix.settings.target }}-cargo-cache | |
| - name: Setup toolchain | |
| run: ${{ matrix.settings.setup }} | |
| if: ${{ matrix.settings.setup }} | |
| shell: bash | |
| - name: Install LLVM and Clang | |
| uses: KyleMayes/install-llvm-action@v2 | |
| if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }} | |
| with: | |
| version: '20' | |
| - name: Install dependencies | |
| run: yarn install --immutable --mode=skip-build | |
| - 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@v6 | |
| with: | |
| name: bindings-${{ matrix.settings.target }} | |
| path: | | |
| packages/binding/*.node | |
| packages/binding/image.wasm32-wasi.wasm | |
| if-no-files-found: error | |
| build-armv7-linux-gnueabihf: | |
| name: Build armv7-unknown-linux-gnueabihf | |
| runs-on: ubuntu-latest | |
| container: | |
| image: debian:bullseye | |
| steps: | |
| - name: Setup tools | |
| run: | | |
| apt-get update | |
| apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libatomic1-armhf-cross git build-essential cmake ninja-build wget curl gnupg | |
| echo "deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-19 main" >> /etc/apt/sources.list | |
| echo "deb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-19 main" >> /etc/apt/sources.list | |
| wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - | |
| apt-get update | |
| apt-get install -y clang-19 | |
| ln -s /usr/bin/clang-19 /usr/bin/clang | |
| ln -s /usr/bin/clang++-19 /usr/bin/clang++ | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - name: Setup cmake | |
| uses: jwlawson/actions-setup-cmake@v2 | |
| with: | |
| cmake-version: '3.x' | |
| - name: Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Install | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| targets: 'armv7-unknown-linux-gnueabihf' | |
| - name: Install dependencies | |
| run: | | |
| corepack enable | |
| yarn install --immutable --mode=skip-build | |
| - name: Config git | |
| run: git config --global --add safe.directory "$(pwd)" | |
| - name: Build | |
| run: | | |
| export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc | |
| yarn workspace @napi-rs/image build --target armv7-unknown-linux-gnueabihf --features oxipng_libdeflater | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: bindings-armv7-unknown-linux-gnueabihf | |
| path: | | |
| packages/*/*.node | |
| if-no-files-found: error | |
| build-freebsd: | |
| runs-on: ubuntu-latest | |
| name: Build FreeBSD | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build | |
| id: build | |
| uses: cross-platform-actions/action@v0.32.0 | |
| env: | |
| DEBUG: 'napi:*' | |
| RUSTUP_HOME: /home/runner/rustup | |
| CARGO_HOME: /home/runner/cargo | |
| RUSTUP_IO_THREADS: 1 | |
| with: | |
| operating_system: freebsd | |
| version: '14.2' | |
| memory: 8G | |
| cpu_count: 3 | |
| environment_variables: 'DEBUG RUSTUP_IO_THREADS' | |
| shell: bash | |
| run: | | |
| env | sort | |
| sudo pkg install -y -f curl node libnghttp2 npm cmake nasm perl5 llvm19 | |
| sudo npm install -g yarn --ignore-scripts | |
| curl https://sh.rustup.rs -sSf --output rustup.sh | |
| sh rustup.sh -y --default-toolchain stable | |
| source "$HOME/.cargo/env" | |
| echo "~~~~ rustc --version ~~~~" | |
| rustc --version | |
| echo "~~~~ node -v ~~~~" | |
| node -v | |
| echo "~~~~ yarn --version ~~~~" | |
| yarn --version | |
| pwd | |
| ls -lah | |
| whoami | |
| env | |
| freebsd-version | |
| yarn install --immutable --mode=skip-build | |
| yarn workspace @napi-rs/image build --features oxipng_libdeflater | |
| rm -rf node_modules | |
| rm -rf target | |
| rm -rf .yarn | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: bindings-freebsd | |
| path: packages/*/*.node | |
| if-no-files-found: error | |
| test-macOS-windows-binding: | |
| name: Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| settings: | |
| - host: windows-11-arm | |
| target: aarch64-pc-windows-msvc | |
| - host: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| - host: macos-latest | |
| target: x86_64-apple-darwin | |
| - host: macos-latest | |
| target: aarch64-apple-darwin | |
| node: | |
| - '20' | |
| - '22' | |
| runs-on: ${{ matrix.settings.host }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup node | |
| uses: actions/setup-node@v6 | |
| if: startsWith(matrix.settings.target, 'x86_64') | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: 'yarn' | |
| architecture: 'x64' | |
| - name: Setup node | |
| uses: actions/setup-node@v6 | |
| if: startsWith(matrix.settings.target, 'aarch64') | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: 'yarn' | |
| architecture: 'arm64' | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: bindings-${{ matrix.settings.target }} | |
| path: artifacts | |
| - name: Create npm dirs | |
| run: yarn workspace @napi-rs/image napi create-npm-dirs | |
| - name: Move artifacts | |
| run: yarn artifacts | |
| shell: bash | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Test bindings | |
| if: startsWith(matrix.settings.target, 'aarch64') | |
| run: | | |
| yarn test | |
| yarn electron electron.js | |
| - name: Test bindings | |
| if: startsWith(matrix.settings.target, 'x86_64') | |
| run: yarn test | |
| test-linux-x64-gnu-binding: | |
| name: Test bindings on Linux-x64-gnu - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - '20' | |
| - '22' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: yarn | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: bindings-x86_64-unknown-linux-gnu | |
| path: artifacts | |
| - name: Create npm dirs | |
| run: yarn workspace @napi-rs/image napi create-npm-dirs | |
| - name: Move artifacts | |
| run: yarn artifacts | |
| shell: bash | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Test bindings | |
| run: docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-slim yarn test | |
| test-linux-x64-musl-binding: | |
| name: Test bindings on x86_64-unknown-linux-musl - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - '20' | |
| - '22' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: yarn | |
| - name: Install dependencies | |
| run: yarn install --immutable --mode=skip-build | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: bindings-x86_64-unknown-linux-musl | |
| path: artifacts | |
| - name: Create npm dirs | |
| run: yarn workspace @napi-rs/image napi create-npm-dirs | |
| - name: Move artifacts | |
| run: yarn artifacts | |
| shell: bash | |
| - name: List packages | |
| run: ls -R . | |
| shell: bash | |
| - name: Test bindings | |
| run: docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-alpine yarn test | |
| test-linux-aarch64-gnu-binding: | |
| name: Test bindings on aarch64-unknown-linux-gnu - node@${{ matrix.node }} | |
| needs: | |
| - build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - '20' | |
| - '22' | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: bindings-aarch64-unknown-linux-gnu | |
| path: artifacts | |
| - name: Install dependencies | |
| run: yarn install --immutable --mode=skip-build | |
| - name: Create npm dirs | |
| run: yarn workspace @napi-rs/image napi create-npm-dirs | |
| - name: Move artifacts | |
| run: yarn artifacts | |
| shell: bash | |
| - name: List packages | |
| run: ls -R packages | |
| shell: bash | |
| - 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: yarn test | |
| test-linux-arm-gnueabihf-binding: | |
| name: Test bindings on armv7-unknown-linux-gnueabihf - node@${{ matrix.node }} | |
| needs: | |
| - build-armv7-linux-gnueabihf | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - '20' | |
| - '22' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: bindings-armv7-unknown-linux-gnueabihf | |
| path: artifacts | |
| - name: Install dependencies | |
| run: yarn install --immutable --mode=skip-build | |
| - name: Create npm dirs | |
| run: yarn workspace @napi-rs/image napi create-npm-dirs | |
| - name: Move artifacts | |
| run: yarn artifacts | |
| shell: bash | |
| - name: List packages | |
| run: ls -R packages | |
| shell: bash | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: arm | |
| - 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 }}-bullseye-slim | |
| options: '--platform linux/arm/v7 -v ${{ github.workspace }}:/build -w /build' | |
| run: yarn test | |
| test-wasi-on-nodejs: | |
| name: Test wasi on Node.js | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: bindings-wasm32-wasip1-threads | |
| path: packages/binding | |
| - name: Install dependencies | |
| run: yarn install --immutable --mode=skip-build | |
| - name: List packages | |
| run: ls -R packages | |
| shell: bash | |
| - name: Run tests | |
| run: yarn test -s | |
| env: | |
| NAPI_RS_FORCE_WASI: '1' | |
| publish: | |
| name: Publish | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| id-token: write | |
| needs: | |
| - build-freebsd | |
| - test-macOS-windows-binding | |
| - test-linux-x64-gnu-binding | |
| - test-linux-x64-musl-binding | |
| - test-linux-aarch64-gnu-binding | |
| - test-linux-arm-gnueabihf-binding | |
| - test-wasi-on-nodejs | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24 | |
| cache: yarn | |
| - name: Install dependencies | |
| run: yarn install --immutable --mode=skip-build | |
| - name: Create npm dirs | |
| run: yarn workspace @napi-rs/image napi create-npm-dirs | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v7 | |
| with: | |
| path: artifacts | |
| - name: Move artifacts | |
| run: yarn artifacts | |
| - name: List packages | |
| run: ls -R ./packages | |
| shell: bash | |
| - name: Publish | |
| if: "startsWith(github.event.head_commit.message, 'chore(release): publish')" | |
| run: | | |
| npm install -g npm | |
| npx lerna publish from-package --no-verify-access --yes | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |