Work in progress for AudioWorkletNode via Worker thread #257
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: 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@v3 | |
- 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 | |
- host: macos-latest | |
target: x86_64-apple-darwin | |
architecture: x64 | |
build: | | |
yarn build | |
strip -x *.node | |
# ARM | |
- host: macos-latest | |
architecture: x64 | |
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 | |
# --------------------------------------------------------- | |
# WINDOWS | |
# --------------------------------------------------------- | |
# Intel 64 | |
- host: windows-latest | |
build: yarn build | |
target: x86_64-pc-windows-msvc | |
architecture: x64 | |
# ARM64 | |
- host: windows-latest | |
architecture: x64 | |
target: aarch64-pc-windows-msvc | |
build: yarn 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 }} - node@16 | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
check-latest: true | |
cache: yarn | |
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 registry | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ matrix.settings.target }}-node@16-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }} | |
- name: Cache cargo index | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cargo/git | |
key: ${{ matrix.settings.target }}-node@16-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }} | |
- name: Cache NPM dependencies | |
uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: npm-cache-${{ matrix.settings.target }}-node@16-${{ hashFiles('yarn.lock') }} | |
- 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: yarn install --ignore-scripts --registry https://registry.npmjs.org --network-timeout 300000 | |
- name: Build | |
run: ${{ matrix.settings.build }} | |
shell: bash | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bindings-${{ matrix.settings.target }} | |
path: ${{ env.APP_NAME }}.*.node | |
if-no-files-found: error | |
# publish: | |
# name: Publish | |
# runs-on: ubuntu-latest | |
# needs: | |
# # - build-freebsd | |
# - build | |
# # - 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@v2 | |
# - name: Setup node | |
# uses: actions/setup-node@v2 | |
# with: | |
# node-version: 16 | |
# check-latest: true | |
# cache: yarn | |
# - name: Cache NPM dependencies | |
# uses: actions/cache@v3 | |
# with: | |
# path: node_modules | |
# key: npm-cache-ubuntu-latest-${{ hashFiles('yarn.lock') }} | |
# restore-keys: | | |
# npm-cache- | |
# - name: Install dependencies | |
# run: yarn install --ignore-scripts --registry https://registry.npmjs.org --network-timeout 300000 | |
# - name: Download all artifacts | |
# uses: actions/download-artifact@v2 | |
# with: | |
# path: artifacts | |
# - name: Move artifacts | |
# run: yarn artifacts | |
# - name: List packages | |
# run: ls -R ./npm | |
# shell: bash | |
# - name: Publish | |
# run: | | |
# if git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$"; | |
# then | |
# echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
# npm publish --access public | |
# elif git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+"; | |
# then | |
# echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc | |
# 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 }} |