build #336
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: build | |
env: | |
DEBUG: napi:* | |
APP_NAME: node-web-audio-api | |
MACOSX_DEPLOYMENT_TARGET: '10.13' | |
on: | |
create: | |
tags: | |
- v* | |
pull_request: null | |
workflow_dispatch: | |
jobs: | |
checks: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
components: clippy | |
- name: Install ALSA and Jack dependencies | |
run: | | |
sudo apt-get update && sudo apt-get install -y libasound2-dev libjack-jackd2-dev | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Generate Cargo.lock | |
run: cargo generate-lockfile | |
- name: Clippy | |
run: cargo clippy --all-features -- -D warnings | |
# - name: Lint | |
# run: npm run lint | |
build: | |
needs: checks | |
if: "!contains(github.event.head_commit.message, 'skip ci')" | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
# --------------------------------------------------------- | |
# MAC | |
# --------------------------------------------------------- | |
# Intel x86_64 | |
- host: macos-latest | |
target: x86_64-apple-darwin | |
architecture: x64 | |
build: | | |
npm run build -- --target x86_64-apple-darwin | |
strip -x *.node | |
# ARM64 | |
- host: macos-latest | |
target: aarch64-apple-darwin | |
architecture: x64 | |
build: | | |
npm run build -- --target aarch64-apple-darwin | |
strip -x *.node | |
# --------------------------------------------------------- | |
# WINDOWS | |
# --------------------------------------------------------- | |
# Intel x86_64 | |
- host: windows-latest | |
target: x86_64-pc-windows-msvc | |
architecture: x64 | |
build: npm run build | |
# ARM64 | |
- host: windows-latest | |
target: aarch64-pc-windows-msvc | |
architecture: x64 | |
build: npm run build -- --target aarch64-pc-windows-msvc | |
# --------------------------------------------------------- | |
# Linux requires libasound2-dev which is a mess to do remotely | |
# in particular for RPi, do it locally and workaround... | |
# --------------------------------------------------------- | |
name: stable - ${{ matrix.settings.target }} - [email protected] | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22.1 | |
check-latest: true | |
architecture: ${{ matrix.settings.architecture }} | |
- name: Setup Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
targets: ${{ matrix.settings.target }} | |
- name: Generate Cargo.lock | |
run: cargo generate-lockfile | |
- name: Cache cargo | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
.cargo-cache | |
target/ | |
key: ${{ matrix.settings.target }}-cargo-${{ matrix.settings.host }} | |
- name: Pull latest image | |
run: ${{ matrix.settings.docker }} | |
env: | |
DOCKER_REGISTRY_URL: ghcr.io | |
if: ${{ matrix.settings.docker }} | |
- name: Setup toolchain | |
run: ${{ matrix.settings.setup }} | |
if: ${{ matrix.settings.setup }} | |
shell: bash | |
- name: Install dependencies | |
run: npm install | |
- name: Build | |
run: ${{ matrix.settings.build }} | |
shell: bash | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bindings-${{ matrix.settings.target }} | |
path: ${{ env.APP_NAME }}.*.node | |
if-no-files-found: error | |