226 lines
8.3 KiB
YAML
226 lines
8.3 KiB
YAML
name: publish
|
|
env:
|
|
DEBUG: napi:*
|
|
NX_RUN_GROUP: ${{ github.run_id }}-${{ github.run_attempt }}
|
|
on:
|
|
release:
|
|
types: [published]
|
|
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 nx -- run-many --target=build-native -- --target=x86_64-apple-darwin
|
|
- host: windows-latest
|
|
build: yarn nx -- run-many --target=build-native -- --target=x86_64-pc-windows-msvc
|
|
target: x86_64-pc-windows-msvc
|
|
# Windows 32bit (not needed)
|
|
# - host: windows-latest
|
|
# build: |
|
|
# yarn nx -- run-many --target=build-native -- --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 &&
|
|
yarn --version &&
|
|
yarn nx -- run-many --target=build-native -- --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: set -e && yarn nx -- run-many --target=build-native -- --target=x86_64-unknown-linux-musl
|
|
- 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 nx -- run-many --target=build-native -- --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 &&
|
|
yarn --version &&
|
|
yarn nx -- run-many --target=build-native -- --target=aarch64-unknown-linux-gnu
|
|
- host: ubuntu-latest
|
|
target: armv7-unknown-linux-gnueabihf
|
|
setup: |
|
|
sudo apt-get update
|
|
sudo apt-get install gcc-arm-linux-gnueabihf -y
|
|
build: |
|
|
yarn nx -- run-many --target=build-native -- --target=armv7-unknown-linux-gnueabihf
|
|
# Android (not needed)
|
|
# - host: ubuntu-latest
|
|
# target: aarch64-linux-android
|
|
# build: |
|
|
# yarn nx -- run-many --target=build-native -- --target=aarch64-linux-android
|
|
# - host: ubuntu-latest
|
|
# target: armv7-linux-androideabi
|
|
# build: |
|
|
# yarn nx -- run-many --target=build-native -- --target=armv7-linux-androideabi
|
|
- 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 nx -- run-many --target=build-native -- --target=aarch64-unknown-linux-musl
|
|
- host: windows-latest
|
|
target: aarch64-pc-windows-msvc
|
|
build: yarn nx -- run-many --target=build-native -- --target=aarch64-pc-windows-msvc
|
|
name: stable - ${{ matrix.settings.target }} - node@18
|
|
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: 18
|
|
check-latest: true
|
|
cache: yarn
|
|
- name: Install
|
|
uses: dtolnay/rust-toolchain@stable
|
|
if: ${{ !matrix.settings.docker }}
|
|
with:
|
|
targets: ${{ matrix.settings.target }}
|
|
- name: Cache cargo
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
.cargo-cache
|
|
target/
|
|
key: ${{ matrix.settings.target }}-cargo-registry
|
|
- 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
|
|
timeout-minutes: 30
|
|
- name: Setup node x86
|
|
uses: actions/setup-node@v3
|
|
if: matrix.settings.target == 'i686-pc-windows-msvc'
|
|
with:
|
|
node-version: 18
|
|
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:/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@v3
|
|
# - 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
|
|
# with:
|
|
# envs: DEBUG RUSTUP_HOME CARGO_HOME RUSTUP_IO_THREADS
|
|
# usesh: true
|
|
# mem: 3000
|
|
# prepare: |
|
|
# pkg install -y -f curl node libnghttp2
|
|
# curl -qL https://www.npmjs.com/install.sh | sh
|
|
# npm install --location=global --ignore-scripts yarn
|
|
# curl https://sh.rustup.rs -sSf --output rustup.sh
|
|
# sh rustup.sh -y --profile minimal --default-toolchain stable
|
|
# 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"
|
|
# pwd
|
|
# ls -lah
|
|
# whoami
|
|
# env
|
|
# freebsd-version
|
|
# yarn install
|
|
# yarn nx -- run-many --target=build-native -- --target=x86_64-unknown-freebsd
|
|
# strip -x packages/*/*.node
|
|
# rm -rf node_modules
|
|
# rm -rf target
|
|
# rm -rf .yarn/cache
|
|
# - name: Upload artifact
|
|
# uses: actions/upload-artifact@v3
|
|
# with:
|
|
# name: bindings-freebsd
|
|
# path: packages/*/*.node
|
|
# if-no-files-found: error
|
|
publish:
|
|
name: Publish
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
# - build-freebsd
|
|
- build
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Setup node
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
check-latest: true
|
|
cache: yarn
|
|
- 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
|
|
shell: bash
|
|
- name: Publish
|
|
run: |
|
|
git checkout -b publish/$GITHUB_REF_NAME
|
|
npm config set //registry.npmjs.org/:_authToken=$NPM_TOKEN
|
|
yarn nx-release --local=false $GITHUB_REF_NAME
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|