chore: bump up Yarn to v4 - autoclosed #285
Workflow file for this run
This file contains 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 | |
MACOSX_DEPLOYMENT_TARGET: '10.13' | |
SYSTEM_DEPS_DAV1D_BUILD_INTERNAL: 'always' | |
permissions: | |
contents: write | |
id-token: write | |
'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: | |
if: "!contains(github.event.head_commit.message, 'skip ci')" | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- host: macos-latest | |
target: x86_64-apple-darwin | |
build: | | |
brew install meson | |
yarn workspace @napi-rs/image build --features with_simd | |
- host: windows-latest | |
build: | | |
python -m pip install meson | |
yarn workspace @napi-rs/image build --features with_simd | |
target: x86_64-pc-windows-msvc | |
- host: ubuntu-latest | |
setup: | | |
sudo apt update | |
sudo apt install meson -y | |
cargo install cargo-xwin | |
build: | | |
export XWIN_CACHE_DIR="$(pwd)/.xwin" | |
export XWIN_ARCH=x86 | |
export CFLAGS="-mavx2 /FI $(pwd)/.xwin/crt/include/intrin0.h" | |
export CXXFLAGS="-mavx2 /FI $(pwd)/.xwin/crt/include/intrin0.h" | |
export CARGO_PROFILE_RELEASE_LTO="false" | |
yarn workspace @napi-rs/image build --features with_simd --target i686-pc-windows-msvc | |
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: >- | |
set -e && | |
apt-get update && | |
apt-get install meson -y && | |
rm /usr/lib/llvm-15/lib/libc++.so && | |
export LDFLAGS="-L/usr/lib/llvm-15/lib -L/usr/x86_64-unknown-linux-gnu/lib/gcc/x86_64-unknown-linux-gnu/4.8.5" && | |
export CFLAGS="-fuse-ld=lld -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot" && | |
export CXXFLAGS="-stdlib=libc++ -fuse-ld=lld -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot -L/usr/lib/llvm-15/lib" && | |
yarn workspace @napi-rs/image build --features with_simd --target x86_64-unknown-linux-gnu && | |
chmod -R 777 target | |
- host: ubuntu-latest | |
target: x86_64-unknown-linux-musl | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
build: >- | |
set -e && | |
unset RUSTFLAGS && | |
unset CC && | |
unset CXX && | |
apk add --update --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing --no-cache perl nasm aom-dev meson && | |
export LIB_AOM_STATIC_LIB_PATH=/usr/lib && | |
export LIB_AOM_INCLUDE_PATH=/usr/include/aom/aom && | |
export LIB_AOM_PKG_CONFIG_PATH=/usr/lib/pkgconfig && | |
yarn workspace @napi-rs/image build --features with_simd && | |
chmod -R 777 target | |
- host: macos-latest | |
target: aarch64-apple-darwin | |
build: | | |
brew install meson | |
yarn workspace @napi-rs/image build --features with_simd | |
- host: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 | |
build: >- | |
set -e && | |
export LDFLAGS="-L/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5" && | |
export CFLAGS="-fuse-ld=lld -mcrc -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot" && | |
export CXXFLAGS="-fuse-ld=lld -mcrc -B/usr/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/4.8.5 --sysroot=/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot -L/usr/aarch64-unknown-linux-gnu/lib/llvm-15/lib -stdlib=libc++" && | |
yarn workspace @napi-rs/image build --features with_simd --target aarch64-unknown-linux-gnu && | |
chmod -R 777 target | |
- host: ubuntu-latest | |
target: armv7-unknown-linux-gnueabihf | |
setup: | | |
sudo apt-get update | |
sudo apt-get install meson gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y | |
build: | | |
yarn workspace @napi-rs/image build --features oxipng_libdeflater --zig --zig-link-only | |
- host: ubuntu-latest | |
target: aarch64-linux-android | |
build: | | |
sudo apt update | |
sudo apt install meson -y | |
yarn workspace @napi-rs/image build --features with_simd | |
${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip packages/*/*.node | |
- host: ubuntu-latest | |
target: armv7-linux-androideabi | |
build: | | |
sudo apt update | |
sudo apt install meson -y | |
export C_INCLUDE_PATH="${ANDROID_NDK_LATEST_HOME}/sources/android/cpufeatures"; | |
export CMAKE_TOOLCHAIN_FILE_armv7_linux_androideabi="${ANDROID_NDK_LATEST_HOME}/build/cmake/android.toolchain.cmake"; | |
yarn workspace @napi-rs/image build --features oxipng_libdeflater | |
${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip packages/*/*.node | |
- host: ubuntu-latest | |
target: aarch64-unknown-linux-musl | |
downloadTarget: aarch64-unknown-linux-musl | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
build: >- | |
set -e && | |
unset RUSTFLAGS && | |
unset CC && | |
unset CXX && | |
apk add --update --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing --no-cache aom-dev perl meson && | |
yarn workspace @napi-rs/image build --target aarch64-unknown-linux-musl --features with_simd && | |
chmod -R 777 target | |
name: stable - ${{ matrix.settings.target }} - node@18 | |
runs-on: ${{ matrix.settings.host }} | |
env: | |
RUST_TARGET: ${{ matrix.settings.target }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: yarn | |
- name: Setup nasm | |
uses: ilammy/setup-nasm@v1 | |
if: matrix.settings.target == 'x86_64-pc-windows-msvc' || matrix.settings.target == 'x86_64-apple-darwin' || matrix.settings.target == 'i686-pc-windows-msvc' | |
- name: Install | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
targets: ${{ matrix.settings.target }} | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
.cargo-cache | |
target/ | |
key: ${{ matrix.settings.target }}-cargo-cache | |
- uses: goto-bus-stop/setup-zig@v2 | |
if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }} | |
with: | |
version: 0.10.1 | |
- name: Install LLVM and Clang | |
uses: KyleMayes/install-llvm-action@v1 | |
if: ${{ matrix.settings.target == 'i686-pc-windows-msvc' }} | |
with: | |
version: '16' | |
- name: Setup toolchain | |
run: ${{ matrix.settings.setup }} | |
if: ${{ matrix.settings.setup }} | |
shell: bash | |
- 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@v3 | |
with: | |
name: bindings-${{ matrix.settings.target }} | |
path: packages/*/*.node | |
if-no-files-found: error | |
build-freebsd: | |
runs-on: macos-12 | |
name: Build FreeBSD | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build | |
id: build | |
uses: vmactions/freebsd-vm@v0 | |
env: | |
DEBUG: napi:* | |
RUSTUP_HOME: /usr/local/rustup | |
CARGO_HOME: /usr/local/cargo | |
RUSTUP_IO_THREADS: 1 | |
CARGO_PROFILE_RELEASE_LTO: false | |
with: | |
envs: DEBUG RUSTUP_HOME CARGO_HOME RUSTUP_IO_THREADS CARGO_PROFILE_RELEASE_LTO | |
usesh: true | |
mem: 3000 | |
prepare: | | |
pkg install -y curl cmake nasm node perl5 npm yarn | |
curl https://sh.rustup.rs -sSf --output rustup.sh | |
sh rustup.sh -y --profile minimal --default-toolchain beta | |
export PATH="/usr/local/cargo/bin:$PATH" | |
echo "~~~~ rustc --version ~~~~" | |
rustc --version | |
echo "~~~~ node -v ~~~~" | |
node -v | |
echo "~~~~ yarn --version ~~~~" | |
yarn --version | |
run: | | |
export PATH="/usr/local/cargo/bin:$PATH" | |
export RUST_TARGET="x86_64-unknown-freebsd" | |
pwd | |
ls -lah | |
whoami | |
env | |
freebsd-version | |
yarn install --immutable --mode=skip-build | |
yarn workspace @napi-rs/image build --features oxipng_libdeflater | |
yarn test | |
rm -rf node_modules | |
rm -rf target | |
rm -rf .yarn/cache | |
rm -f *.core | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
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-latest | |
target: x86_64-pc-windows-msvc | |
# macOS on GitHub Actions does not support avx2 | |
# - host: macos-latest | |
# target: x86_64-apple-darwin | |
node: | |
- '16' | |
- '18' | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: yarn | |
- name: Install dependencies | |
run: yarn install --immutable | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-${{ matrix.settings.target }} | |
path: artifacts | |
- name: Move artifacts | |
run: yarn artifacts | |
shell: bash | |
- name: List packages | |
run: ls -R . | |
shell: bash | |
- name: Test bindings | |
run: | | |
yarn test | |
yarn electron electron.js | |
test-linux-x64-gnu-binding: | |
name: Test bindings on Linux-x64-gnu - node@${{ matrix.node }} | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
node: | |
- '16' | |
- '18' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: yarn | |
- name: Install dependencies | |
run: yarn install --immutable | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-x86_64-unknown-linux-gnu | |
path: artifacts | |
- 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: | |
- '16' | |
- '18' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: yarn | |
- name: Install dependencies | |
run: yarn install --immutable --mode=skip-build | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-x86_64-unknown-linux-musl | |
path: artifacts | |
- 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: | |
- '16' | |
- '18' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-aarch64-unknown-linux-gnu | |
path: artifacts | |
- name: Install dependencies | |
run: yarn install --immutable --mode=skip-build | |
- 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: 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 | |
yarn test | |
ls -la | |
test-linux-arm-gnueabihf-binding: | |
name: Test bindings on armv7-unknown-linux-gnueabihf - node@${{ matrix.node }} | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
node: | |
- '16' | |
- '18' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-armv7-unknown-linux-gnueabihf | |
path: artifacts | |
- name: Install dependencies | |
run: yarn install --immutable --mode=skip-build | |
- 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: | | |
set -e | |
yarn test | |
ls -la | |
publish: | |
name: Publish | |
runs-on: ubuntu-latest | |
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 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: yarn | |
- name: Install dependencies | |
run: yarn install --immutable --mode=skip-build | |
- name: Download all artifacts | |
uses: actions/download-artifact@v3 | |
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 config set provenance true | |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
npx lerna publish from-package --no-verify-access --yes | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} |