build #73
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: | |
build: | |
if: "!contains(github.event.head_commit.message, 'skip ci')" | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
# --------------------------------------------------------- | |
# MAC (ok) | |
# --------------------------------------------------------- | |
# 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 (ok) | |
# --------------------------------------------------------- | |
# 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 | |
# Intel 32 | |
# - host: windows-latest | |
# build: | | |
# yarn build --target i686-pc-windows-msvc | |
# # yarn test | |
# target: i686-pc-windows-msvc | |
# architecture: x86 | |
# --------------------------------------------------------- | |
# Linux requires libasound-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@v2 | |
- name: Setup node | |
uses: actions/setup-node@v2 | |
with: | |
node-version: 16 | |
check-latest: true | |
cache: yarn | |
architecture: ${{ matrix.settings.architecture }} | |
- name: Install | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
override: true | |
toolchain: stable | |
target: ${{ matrix.settings.target }} | |
- name: Generate Cargo.lock | |
uses: actions-rs/cargo@v1 | |
with: | |
command: generate-lockfile | |
- name: Cache cargo registry | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ matrix.settings.target }}-node@16-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }} | |
- name: Cache cargo index | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/git | |
key: ${{ matrix.settings.target }}-node@16-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }} | |
- name: Cache NPM dependencies | |
uses: actions/cache@v2 | |
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@v2 | |
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@v2 | |
# 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 }} |