Configure Renovate #238
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: Publish (node) | |
env: | |
DEBUG: napi:* | |
MACOSX_DEPLOYMENT_TARGET: "10.13" | |
CARGO_INCREMENTAL: 0 | |
CARGO_PROFILE_RELEASE_LTO: "fat" | |
CI: "1" | |
on: | |
push: | |
branches: | |
- "*" | |
tags: | |
- v* | |
pull_request: | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- host: macos-latest | |
target: x86_64-apple-darwin | |
build: | | |
yarn workspaces run build | |
strip -x packages/*/*.node | |
- host: windows-latest | |
build: | | |
yarn workspaces run build | |
target: x86_64-pc-windows-msvc | |
- host: windows-latest | |
build: | | |
export CARGO_PROFILE_RELEASE_LTO=false | |
yarn workspaces run build --target i686-pc-windows-msvc --cargo-flags="--no-default-features" | |
yarn workspaces run test | |
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 && | |
unset CC_x86_64_unknown_linux_gnu && unset CC && yarn workspaces run build --target x86_64-unknown-linux-gnu && | |
strip packages/*/*.node | |
- host: ubuntu-latest | |
target: x86_64-unknown-linux-musl | |
# musl build is slow, let's disable the LTO | |
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine | |
build: >- | |
set -e && | |
export CARGO_PROFILE_RELEASE_LTO=false && | |
RUSTFLAGS='-C target-feature=-crt-static' yarn workspaces run build && | |
llvm-strip -x packages/*/*.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 workspaces run build --target=aarch64-apple-darwin | |
strip -x packages/*/*.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 && | |
export CC_aarch64_unknown_linux_gnu=/usr/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc && | |
yarn workspaces run build --target aarch64-unknown-linux-gnu && | |
llvm-strip -x packages/*/*.node | |
- host: ubuntu-latest | |
target: armv7-unknown-linux-gnueabihf | |
setup: | | |
sudo apt-get update | |
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y | |
build: | | |
yarn workspaces run build --target=armv7-unknown-linux-gnueabihf --cargo-flags='--no-default-features' | |
arm-linux-gnueabihf-strip packages/*/*.node | |
- host: ubuntu-latest | |
target: aarch64-linux-android | |
build: | | |
export CLANG_VERSION=`ls ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang | sed 's/ *$//g'` | |
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" | |
export CC="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" | |
export CXX="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++" | |
export AR="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" | |
export PATH="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}" | |
touch "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" | |
chmod 777 "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" | |
echo "INPUT(-lunwind)" > "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/aarch64/libgcc.a" | |
yarn workspaces run build --target aarch64-linux-android | |
${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip packages/*/*.node | |
- host: ubuntu-latest | |
target: armv7-linux-androideabi | |
build: | | |
export CLANG_VERSION=`ls ${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang | sed 's/ *$//g'` | |
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" | |
export CC="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" | |
export CXX="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++" | |
export AR="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar" | |
export PATH="${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}" | |
touch "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/arm/libgcc.a" | |
chmod 777 "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/arm/libgcc.a" | |
echo "INPUT(-lunwind)" > "${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/${CLANG_VERSION}/lib/linux/arm/libgcc.a" | |
yarn workspaces run build --target armv7-linux-androideabi | |
${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: >- | |
rustup toolchain install $(cat ./rust-toolchain) && | |
rustup target add aarch64-unknown-linux-musl && | |
env RUSTFLAGS='-C target-feature=-crt-static' yarn workspaces run build --target=aarch64-unknown-linux-musl && | |
/aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip packages/*/*.node | |
- host: windows-latest | |
target: aarch64-pc-windows-msvc | |
# Disable `LTO` and increase `codegen-units` to avoid llvm `OOM` on GitHub Actions. | |
build: | | |
export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=256 | |
export CARGO_PROFILE_RELEASE_LTO=false | |
yarn workspaces run build --target aarch64-pc-windows-msvc --cargo-flags='--no-default-features' | |
name: stable - ${{ matrix.settings.target }} - node@16 | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup node x64 | |
uses: actions/setup-node@v3 | |
if: matrix.settings.target != 'i686-pc-windows-msvc' | |
with: | |
node-version: 16 | |
check-latest: true | |
cache: yarn | |
architecture: x64 | |
- 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: Install | |
uses: actions-rs/toolchain@v1 | |
if: ${{ !matrix.settings.docker }} | |
with: | |
profile: minimal | |
override: true | |
target: ${{ matrix.settings.target }} | |
- name: Install node dependencies | |
shell: bash | |
run: | | |
yarn | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ matrix.settings.target }}-node@16-cargo-registry-trimmed | |
- name: Cache cargo index | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cargo/git | |
key: ${{ matrix.settings.target }}-node@16-cargo-index-trimmed | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: npm-cache-${{ matrix.settings.target }}-node@16 | |
if: ${{ matrix.settings.docker }} | |
- name: Setup toolchain | |
run: ${{ matrix.settings.setup }} | |
if: ${{ matrix.settings.setup }} | |
shell: bash | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --registry https://registry.npmjs.org --network-timeout 300000 | |
- name: Build in docker | |
uses: addnab/docker-run-action@v3 | |
if: ${{ matrix.settings.docker }} | |
with: | |
image: ${{ matrix.settings.docker }} | |
options: -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry -v ${{ github.workspace }}:/build -w /build | |
run: ${{ matrix.settings.build }} | |
- name: Build | |
if: ${{ !matrix.settings.docker }} | |
run: ${{ matrix.settings.build }} | |
shell: bash | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bindings-${{ matrix.settings.target }} | |
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 | |
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 | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: npm-cache-test-${{ matrix.settings.target }}-${{ matrix.node }} | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --registry https://registry.npmjs.org --network-timeout 300000 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: bindings-${{ matrix.settings.target }} | |
path: . | |
- name: List packages | |
run: ls -R . | |
shell: bash | |
- name: Build TypeScript | |
run: yarn workspaces run build:ts | |
- name: Test bindings | |
run: yarn workspaces run 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 | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: npm-cache-test-linux-x64-gnu-${{ matrix.node }} | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --registry https://registry.npmjs.org --network-timeout 300000 | |
- 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: Build TypeScript | |
run: yarn workspaces run build:ts | |
- name: Test bindings | |
run: docker run --rm -v $(pwd):/swc -w /swc node:${{ matrix.node }}-slim yarn workspaces run 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 | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: npm-cache-test-x86_64-unknown-linux-musl-${{ matrix.node }} | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --registry https://registry.npmjs.org --network-timeout 300000 | |
- 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: Build TypeScript | |
run: yarn workspaces run build:ts | |
- name: Test bindings | |
run: docker run --rm -v $(pwd):/swc -w /swc node:${{ matrix.node }}-alpine yarn workspaces run 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: node_modules | |
key: npm-cache-test-linux-aarch64-gnu-${{ matrix.node }} | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --ignore-platform --registry https://registry.npmjs.org --network-timeout 300000 | |
- name: Build TypeScript | |
run: yarn workspaces run build:ts | |
- 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 ${{ github.workspace }}:/build -w /build" | |
run: | | |
set -e | |
yarn workspaces run test | |
ls -la | |
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: node_modules | |
key: npm-cache-test-linux-aarch64-musl-${{ matrix.node }} | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --ignore-platform --registry https://registry.npmjs.org --network-timeout 300000 | |
- name: Build TypeScript | |
run: yarn workspaces run build:ts | |
- name: Setup and run tests | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: multiarch/alpine:aarch64-latest-stable | |
options: "-v ${{ github.workspace }}:/build -w /build" | |
run: | | |
set -e | |
apk add nodejs npm yarn | |
yarn workspaces run 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: node_modules | |
key: npm-cache-test-linux-arm-gnueabihf-${{ matrix.node }} | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --ignore-platform --registry https://registry.npmjs.org --network-timeout 300000 | |
- name: Build TypeScript | |
run: yarn workspaces run build:ts | |
- 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 ${{ github.workspace }}:/build -w /build" | |
run: | | |
set -e | |
yarn workspaces run test | |
ls -la | |
publish: | |
if: ${{ startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/ci' }} | |
name: npm | |
runs-on: ubuntu-latest | |
needs: | |
- test-linux-x64-gnu-binding | |
- test-linux-x64-musl-binding | |
- test-linux-aarch64-gnu-binding | |
- test-linux-arm-gnueabihf-binding | |
- test-macOS-windows-binding | |
- test-linux-aarch64-musl-binding | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- name: Set release name | |
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: npm-cache-publish | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --registry https://registry.npmjs.org --network-timeout 300000 | |
- name: Build typescript files | |
run: yarn workspaces run build:ts | |
- name: Download all artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: List binaries | |
run: ls -R artifacts | |
shell: bash | |
- name: Copy binaries | |
shell: bash | |
run: | | |
./scripts/move-artifacts.sh css || true | |
./scripts/move-artifacts.sh html || true | |
./scripts/move-artifacts.sh linter || true | |
- name: Move binaries | |
shell: bash | |
run: | | |
yarn workspaces run artifacts | |
- name: List npm | |
run: ls -R ./packages/*/scripts/npm | |
shell: bash | |
- name: Publish | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
run: | | |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
(cd packages/css && npm publish --access public || true) | |
(cd packages/html && npm publish --access public || true) | |
(cd packages/linter && npm publish --access public || true) | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} |