feat: upgrade to usvg/resvg 0.34 #959
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: resvgjs | |
MACOSX_DEPLOYMENT_TARGET: '10.13' | |
'on': | |
push: | |
branches: | |
- main | |
tags-ignore: | |
- '**' | |
# 忽略以下文件 | |
paths-ignore: | |
- '**.md' | |
- 'LICENSE' | |
- '**/*.gitignore' | |
- '.editorconfig' | |
- 'docs/**' | |
- 'example/*.png' | |
pull_request: null | |
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: | | |
yarn build | |
strip -x *.node | |
- host: windows-latest | |
build: yarn build | |
target: x86_64-pc-windows-msvc | |
- host: windows-latest | |
build: | | |
yarn build --target i686-pc-windows-msvc | |
yarn test | |
target: i686-pc-windows-msvc | |
architecture: x86 | |
- host: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian | |
build: >- | |
set -e && | |
rustup target add x86_64-unknown-linux-gnu && | |
yarn build --target x86_64-unknown-linux-gnu && | |
strip *.node | |
- host: ubuntu-latest | |
target: x86_64-unknown-linux-musl | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
build: >- | |
set -e && | |
yarn build && | |
llvm-strip -x *.node | |
- host: macos-latest | |
target: aarch64-apple-darwin | |
build: | | |
sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*; | |
export CC=$(xcrun -f clang); | |
export CXX=$(xcrun -f clang++); | |
SYSROOT=$(xcrun --sdk macosx --show-sdk-path); | |
export CFLAGS="-isysroot $SYSROOT -isystem $SYSROOT"; | |
yarn build --target aarch64-apple-darwin | |
strip -x *.node | |
- host: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64 | |
build: >- | |
set -e && | |
rustup target add aarch64-unknown-linux-gnu && | |
yarn build --target aarch64-unknown-linux-gnu && | |
aarch64-unknown-linux-gnu-strip *.node | |
- host: ubuntu-latest | |
target: armv7-unknown-linux-gnueabihf | |
setup: | | |
sudo apt-get update | |
sudo apt-get install gcc-arm-linux-gnueabihf -y | |
build: | | |
yarn build --target armv7-unknown-linux-gnueabihf | |
arm-linux-gnueabihf-strip *.node | |
- host: ubuntu-latest | |
target: aarch64-linux-android | |
build: | | |
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" | |
export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" | |
export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++" | |
export AR="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" | |
export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}" | |
yarn build --target aarch64-linux-android | |
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip *.node | |
- host: ubuntu-latest | |
target: armv7-linux-androideabi | |
build: | | |
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" | |
export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" | |
export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++" | |
export AR="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" | |
export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}" | |
yarn build --target armv7-linux-androideabi | |
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip *.node | |
- 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 && | |
yarn build --target aarch64-unknown-linux-musl && | |
/aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node | |
- host: windows-latest | |
target: aarch64-pc-windows-msvc | |
build: yarn build --target aarch64-pc-windows-msvc | |
name: stable - ${{ matrix.settings.target }} - node@16 | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
if: ${{ !matrix.settings.docker }} | |
with: | |
node-version: 16 | |
check-latest: true | |
cache: yarn | |
# architecture: ${{ matrix.settings.architecture }} | |
- name: Install | |
uses: actions-rs/toolchain@v1 | |
if: ${{ !matrix.settings.docker }} | |
with: | |
profile: minimal | |
override: true | |
toolchain: stable | |
target: ${{ matrix.settings.target }} | |
# - name: Generate Cargo.lock | |
# uses: actions-rs/cargo@v1 | |
# if: ${{ !matrix.settings.docker }} | |
# with: | |
# command: generate-lockfile | |
- name: Cache cargo | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
.cargo-cache/registry/index/ | |
.cargo-cache/registry/cache/ | |
.cargo-cache/git/db/ | |
target/ | |
key: ${{ matrix.settings.target }}-cargo-${{ matrix.settings.host }} | |
- uses: goto-bus-stop/setup-zig@v2 | |
if: ${{ matrix.settings.target == 'armv7-unknown-linux-gnueabihf' }} | |
with: | |
version: 0.10.0 | |
- name: Setup toolchain | |
run: ${{ matrix.settings.setup }} | |
if: ${{ matrix.settings.setup }} | |
shell: bash | |
- name: Setup node x86 | |
if: matrix.settings.target == 'i686-pc-windows-msvc' | |
run: yarn config set supportedArchitectures.cpu "ia32" | |
shell: bash | |
- name: Install dependencies | |
run: yarn install | |
- name: Setup node x86 | |
uses: actions/setup-node@v3 | |
if: matrix.settings.target == 'i686-pc-windows-msvc' | |
with: | |
node-version: 16 | |
check-latest: true | |
cache: yarn | |
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:/root/.cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/root/.cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/root/.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 artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bindings-${{ matrix.settings.target }} | |
path: ${{ env.APP_NAME }}.*.node | |
if-no-files-found: error | |
build-wasm: | |
name: Build and test Wasm - node@${{ matrix.node }}(Linux-x64-gnu) | |
strategy: | |
fail-fast: false | |
matrix: | |
node: ['14', '16', '18'] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
check-latest: true | |
- name: Install | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
override: true | |
- name: Cache cargo | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ matrix.settings.target }}-node@14-cargo-cache | |
- name: Install wasm-pack | |
uses: jetli/[email protected] | |
with: | |
version: 'latest' | |
- name: Install dependencies | |
run: yarn install | |
- name: Build Wasm | |
run: yarn build:wasm | |
- name: Test Wasm | |
run: yarn test:wasm | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wasm32 | |
path: wasm/dist/*.wasm | |
- name: List packages | |
run: | | |
ls -R ./wasm | |
ls -lt ./wasm/index_bg.wasm | |
shell: bash | |
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 | |
node: | |
- '14' | |
- '16' | |
- '18' | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
check-latest: true | |
cache: yarn | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .yarn/cache | |
key: npm-cache-test-${{ matrix.settings.target }}-${{ matrix.node }} | |
- name: Install dependencies | |
run: yarn install | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-${{ matrix.settings.target }} | |
path: . | |
- name: List packages | |
run: ls -R . | |
shell: bash | |
- name: Test bindings | |
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: | |
- '14' | |
- '16' | |
- '18' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
check-latest: true | |
cache: yarn | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .yarn/cache | |
key: npm-cache-test-linux-x64-gnu-${{ matrix.node }} | |
- name: Install dependencies | |
run: yarn install | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-x86_64-unknown-linux-gnu | |
path: . | |
- name: List packages | |
run: ls -R . | |
shell: bash | |
- name: Test bindings | |
run: docker run --rm -v /usr/share/fonts:/usr/share/fonts -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: | |
- '14' | |
- '16' | |
- '18' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
check-latest: true | |
cache: yarn | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .yarn/cache | |
key: npm-cache-test-x86_64-unknown-linux-musl-${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
yarn config set supportedArchitectures.libc "musl" | |
yarn install | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-x86_64-unknown-linux-musl | |
path: . | |
- name: List packages | |
run: ls -R . | |
shell: bash | |
- name: Test bindings | |
run: docker run --rm -v /usr/share/fonts:/usr/share/fonts -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: | |
- '14' | |
- '16' | |
- '18' | |
runs-on: ubuntu-latest | |
steps: | |
- run: docker run --rm --privileged multiarch/qemu-user-static:register --reset | |
- uses: actions/checkout@v3 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-aarch64-unknown-linux-gnu | |
path: . | |
- name: List packages | |
run: ls -R . | |
shell: bash | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .yarn/cache | |
key: npm-cache-test-linux-aarch64-gnu-${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
yarn config set supportedArchitectures.cpu "arm64" | |
yarn config set supportedArchitectures.libc "glibc" | |
yarn install | |
- name: Setup and run tests | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: ghcr.io/napi-rs/napi-rs/nodejs:aarch64-${{ matrix.node }} | |
options: '-v /usr/share/fonts:/usr/share/fonts -v ${{ github.workspace }}:/build -w /build' | |
run: | | |
set -e | |
find /usr/share/fonts -name *.ttf | |
ls -la | |
yarn test | |
test-linux-aarch64-musl-binding: | |
name: Test bindings on aarch64-unknown-linux-musl - node@${{ matrix.node }} | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
steps: | |
- run: docker run --rm --privileged multiarch/qemu-user-static:register --reset | |
- uses: actions/checkout@v3 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-aarch64-unknown-linux-musl | |
path: . | |
- name: List packages | |
run: ls -R . | |
shell: bash | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .yarn/cache | |
key: npm-cache-test-linux-aarch64-musl-${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
yarn config set supportedArchitectures.cpu "arm64" | |
yarn config set supportedArchitectures.libc "musl" | |
yarn install | |
- name: Setup and run tests | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: multiarch/alpine:aarch64-latest-stable | |
options: '-v /usr/share/fonts:/usr/share/fonts -v ${{ github.workspace }}:/build -w /build' | |
run: | | |
set -e | |
find /usr/share/fonts -name *.ttf | |
apk add nodejs npm yarn | |
yarn test | |
test-linux-arm-gnueabihf-binding: | |
name: Test bindings on armv7-unknown-linux-gnueabihf - node@${{ matrix.node }} | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
node: | |
- '14' | |
- '16' | |
- '18' | |
runs-on: ubuntu-latest | |
steps: | |
- run: docker run --rm --privileged multiarch/qemu-user-static:register --reset | |
- uses: actions/checkout@v3 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-armv7-unknown-linux-gnueabihf | |
path: . | |
- name: List packages | |
run: ls -R . | |
shell: bash | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .yarn/cache | |
key: npm-cache-test-linux-arm-gnueabihf-${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
yarn config set supportedArchitectures.cpu "arm" | |
yarn install | |
- name: Setup and run tests | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: ghcr.io/napi-rs/napi-rs/nodejs:armhf-${{ matrix.node }} | |
options: '-v /usr/share/fonts:/usr/share/fonts -v ${{ github.workspace }}:/build -w /build' | |
run: | | |
set -e | |
find /usr/share/fonts -name *.ttf | |
ls -la | |
yarn test | |
publish: | |
name: Publish | |
runs-on: ubuntu-latest | |
needs: | |
- build-wasm | |
- test-macOS-windows-binding | |
- test-linux-x64-gnu-binding | |
- test-linux-x64-musl-binding | |
- test-linux-aarch64-gnu-binding | |
- test-linux-aarch64-musl-binding | |
- test-linux-arm-gnueabihf-binding | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
check-latest: true | |
cache: yarn | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .yarn/cache | |
key: npm-cache-ubuntu-latest-publish | |
restore-keys: | | |
npm-cache- | |
- name: Install dependencies | |
run: yarn install | |
- name: Download all artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: List artifacts | |
run: ls -R ./artifacts | |
- name: Move Wasm artifacts | |
run: mv -f ./artifacts/wasm32/*.wasm ./wasm | |
- name: List Wasm packages | |
run: | | |
ls -R ./wasm | |
ls -lt ./wasm/index_bg.wasm | |
- name: Move Node.js artifacts | |
run: yarn artifacts | |
- name: List node packages | |
run: ls -R ./npm | |
shell: bash | |
- name: Publish to npm packages | |
run: | | |
if git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$"; | |
then | |
echo "Publishing node packages" | |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
npm publish --access public | |
echo "Publishing Wasm packages" | |
cd wasm | |
npm publish --access public | |
elif git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+"; | |
then | |
echo "Publishing node packages" | |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
npm publish --tag next --access public | |
echo "Publishing Wasm packages" | |
cd wasm | |
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 }} |