generated from napi-rs/package-template
-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #144 from ircam-ismm/chore/refactor-ci
Refactor CI to build binaries using cross-rs
- Loading branch information
Showing
19 changed files
with
325 additions
and
502 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
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
This file was deleted.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
name: matrix-build | ||
env: | ||
DEBUG: napi:* | ||
PROJECT_NAME: node-web-audio-api | ||
CARGO_BUILD_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: darwin-x64 | ||
runner: macos-latest | ||
target: x86_64-apple-darwin | ||
command: cargo | ||
|
||
- name: win32-arm64-msvc | ||
runner: windows-latest | ||
target: aarch64-pc-windows-msvc | ||
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: linux-x64-gnu | ||
runner: ubuntu-latest | ||
target: x86_64-unknown-linux-gnu | ||
command: cross | ||
|
||
- name: linux-arm-gnueabihf | ||
runner: ubuntu-latest | ||
target: armv7-unknown-linux-gnueabihf | ||
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 | ||
with: | ||
components: rustfmt | ||
|
||
# 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: Install Deps | ||
run: npm install | ||
|
||
- name: Re-generate files from IDL | ||
run: npm run generate | ||
|
||
- name: Build Binary | ||
shell: bash | ||
run: | | ||
rustup target add ${{ matrix.target }} | ||
if [[ "${{ matrix.runner }}" == "ubuntu-latest" ]]; then | ||
echo "Build with Jack feature" | ||
${{ matrix.command }} build --locked --features jack --release --target ${{ matrix.target }} | ||
else | ||
${{ matrix.command }} build --locked --release --target ${{ matrix.target }} | ||
fi | ||
- name: Rename Binary | ||
shell: bash | ||
run: | | ||
BIN_PREFIX="" | ||
BIN_SUFFIX="" | ||
if [[ "${{ matrix.runner }}" == "windows-latest" ]]; then | ||
BIN_PREFIX="" | ||
BIN_SUFFIX=".dll" | ||
elif [[ "${{ matrix.runner }}" == "macos-latest" ]]; then | ||
BIN_PREFIX="lib" | ||
BIN_SUFFIX=".dylib" | ||
elif [[ "${{ matrix.runner }}" == "ubuntu-latest" ]]; then | ||
BIN_PREFIX="lib" | ||
BIN_SUFFIX=".so" | ||
fi | ||
ls -al target/${{ matrix.target }}/release/ | ||
# The built binary output location | ||
BIN_OUTPUT="target/${{ matrix.target }}/release/${BIN_PREFIX}${CARGO_BUILD_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 | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# 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: | ||
contents: read | ||
|
||
# no access to secrets | ||
on: | ||
push: | ||
branches: [main] | ||
pull_request: | ||
workflow_dispatch: | ||
workflow_call: # make the job callable by matrix-build | ||
|
||
jobs: | ||
verify-build: | ||
# run on macos-latest which seems to have a soundcard available | ||
runs-on: macos-latest | ||
|
||
steps: | ||
- name: Setup Rust toolchain | ||
uses: dtolnay/rust-toolchain@stable | ||
with: | ||
components: clippy, rustfmt | ||
|
||
- name: Setup node | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 22 | ||
|
||
- name: Check out repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Generate Cargo.lock | ||
run: cargo generate-lockfile | ||
|
||
# restore cargo cache from previous runs | ||
- name: Rust Cache | ||
uses: Swatinem/rust-cache@v2 | ||
with: | ||
# The cache should not be shared between different workflows and jobs. | ||
shared-key: ${{ github.workflow }}-${{ github.job }} | ||
|
||
- name: Install Deps | ||
run: npm install | ||
|
||
# check it builds | ||
- name: Build | ||
run: npm run build | ||
|
||
# run checks and tests | ||
- name: Clippy | ||
# run: cargo clippy --all-features -- -D warnings | ||
run: cargo clippy --all-targets -- -D warnings | ||
- name: Fmt | ||
run: cargo fmt -- --check --color always | ||
- name: Lint | ||
run: npm run lint | ||
- name: Test | ||
run: npm run test:ci | ||
|
Oops, something went wrong.