Skip to content

Commit

Permalink
ci: matrix-build first pass
Browse files Browse the repository at this point in the history
  • Loading branch information
b-ma committed Dec 24, 2024
1 parent 8136cec commit 3d4c159
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 3 deletions.
103 changes: 103 additions & 0 deletions .github/workflows/matrix-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: matrix-build
env:
DEBUG: napi:*
PROJECT_NAME: node-web-audio-api
MACOSX_DEPLOYMENT_TARGET: '10.13'
CARGO_TERM_COLOR: always

on:
push:
tags:
- '*'
workflow_dispatch:

jobs:
# verify-build:
# uses: ./.github/workflows/verify-build.yaml

matrix-build:
# needs: verify-build
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- name: darwin-arm64
runner: macos-latest
target: aarch64-apple-darwin
command: cargo

- name: win32-x64-msvc
runner: windows-latest
target: x86_64-pc-windows-msvc
command: cargo

- name: linux-arm64-gnu
runner: ubuntu-latest
target: aarch64-unknown-linux-gnu
command: cross

name: build - ${{ matrix.name }}
steps:
- name: Check out repository
uses: actions/checkout@v4

# node is only used to generate the files, can use host architecture
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 22

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

# only install cross (via cargo-binstall) if we need it
- name: Install Cross
if: matrix.command == 'cross'
shell: bash
run: |
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
cargo binstall --no-confirm cross
- name: Generate Cargo.lock
run: cargo generate-lockfile

- name: Generate files from IDL
run: npm run generate

- name: Build Binary
run: |
if [[ "${{ matrix.runner }}" == "ubuntu-latest" ]]; then
${{ matrix.command }} build --verbose --locked --features jack --release --target ${{ matrix.target }}
else
${{ matrix.command }} build --verbose --locked --release --target ${{ matrix.target }}
fi
- name: Rename Binary
shell: bash
run: |
BIN_SUFFIX=""
if [[ "${{ matrix.runner }}" == "windows-latest" ]]; then
BIN_SUFFIX=".dll"
elif [[ "${{ matrix.runner }}" == "macos-latest" ]]; then
BIN_SUFFIX=".dylib"
elif [[ "${{ matrix.runner }}" == "ubuntu-latest" ]]; then
BIN_SUFFIX=".so"
fi
# The built binary output location
BIN_OUTPUT="target/${{ matrix.target }}/release/lib${PROJECT_NAME}${BIN_SUFFIX}"
# Define a better name for the final binary
BIN_RELEASE="${PROJECT_NAME}.${{ matrix.name }}.node"
# Move the built binary where you want it
mv "${BIN_OUTPUT}" "./${BIN_RELEASE}"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: bindings-${{ matrix.name }}
path: ${{ env.PROJECT_NAME }}.${{ matrix.name }}.node
if-no-files-found: error

7 changes: 4 additions & 3 deletions .github/workflows/verify-build.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow

name: verify-build
env:
MACOSX_DEPLOYMENT_TARGET: '10.13'
CARGO_TERM_COLOR: always

# read-only repo token, no access to secrets
permissions:
Expand All @@ -12,9 +15,7 @@ on:
branches: [main, chore/refactor-ci]
pull_request:
workflow_dispatch:

env:
CARGO_TERM_COLOR: always
workflow_call:

jobs:
verify-build:
Expand Down
7 changes: 7 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,10 @@ strip = true

[features]
jack = ["web-audio-api/cpal-jack"]


[target.aarch64-unknown-linux-gnu]
pre-build = [
"dpkg --add-architecture $CROSS_DEB_ARCH",
"apt-get update && apt-get --assume-yes install libasound2-dev:$CROSS_DEB_ARCH libjack-jackd2-dev:$CROSS_DEB_ARCH"
]

0 comments on commit 3d4c159

Please sign in to comment.