Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 20 additions & 48 deletions .github/workflows/prebuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,86 +9,58 @@ on:
jobs:
prebuild:
strategy:
fail-fast: false
matrix:
include:
# Linux x64
- os: ubuntu-latest
combo:
- runs-on: ubuntu-latest
os: ubuntu
arch: x64
node: '20.x'

# Linux ARM64
- os: ubuntu-latest
- runs-on: ubuntu-latest
os: ubuntu
arch: arm64
node: '20.x'

# macOS x64
- os: macos-latest
- runs-on: macos-latest
os: macos
arch: x64
node: '20.x'

# macOS ARM64
- os: macos-latest
- runs-on: macos-latest
os: macos
arch: arm64
node: '20.x'

# Windows x64
- os: windows-latest
- runs-on: windows-latest
os: windows
arch: x64
node: '20.x'

# Note: Windows ia32 (32-bit) removed - Node.js 18+ doesn't provide ia32 builds for Windows

runs-on: ${{ matrix.os }}
runs-on: ${{ matrix.combo.runs-on }}

name: Prebuild ${{ matrix.os }} - ${{ matrix.arch }}
name: Prebuild ${{ matrix.combo.os }}-${{ matrix.combo.arch }}

steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
architecture: ${{ matrix.arch }}
node-version: '20.x'
architecture: ${{ matrix.combo.arch }}

- name: Install ALSA headers (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libasound2-dev

- name: Setup ARM64 cross-compilation (Linux ARM64)
if: runner.os == 'Linux' && matrix.arch == 'arm64'
run: |
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

- name: Install dependencies
run: npm install --ignore-scripts

- name: Prebuild (Linux x64)
if: runner.os == 'Linux' && matrix.arch == 'x64'
run: prebuildify --napi --strip

- name: Prebuild (Linux ARM64)
if: runner.os == 'Linux' && matrix.arch == 'arm64'
run: |
export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
export npm_config_arch=arm64
prebuildify --napi --strip --arch arm64
- name: Install prebuildify
run: npm install -g prebuildify

- name: Prebuild (macOS)
if: runner.os == 'macOS'
- name: Prebuild
run: prebuildify --napi --strip

- name: Prebuild (Windows)
if: runner.os == 'Windows'
run: prebuildify --napi --strip --arch ${{ matrix.arch }}

- name: Upload prebuilds
uses: actions/upload-artifact@v4
with:
name: prebuilds-${{ matrix.os }}-${{ matrix.arch }}
name: prebuilds-${{ matrix.combo.os }}-${{ matrix.combo.arch }}
path: prebuilds/
retention-days: 7

Expand Down