Skip to content

Commit c73ab27

Browse files
committed
ci: add prebuild workflow for cross-platform prebuilt binaries
1 parent ea69925 commit c73ab27

1 file changed

Lines changed: 78 additions & 0 deletions

File tree

.github/workflows/prebuild.yml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: Prebuild
2+
3+
on:
4+
# Manual trigger for building prebuilds on demand
5+
workflow_dispatch:
6+
# Automatically build on version tags
7+
push:
8+
tags:
9+
- 'v*'
10+
11+
jobs:
12+
prebuild:
13+
name: Prebuild ${{ matrix.os }}
14+
runs-on: ${{ matrix.os }}
15+
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
20+
# ubuntu-latest = linux-x64
21+
# windows-latest = win32-x64
22+
# macos-latest = darwin-arm64 (Apple Silicon)
23+
# macos-13 = darwin-x64 (Intel Mac)
24+
25+
steps:
26+
- uses: actions/checkout@v4
27+
28+
- name: Set up Node.js
29+
uses: actions/setup-node@v4
30+
with:
31+
node-version: 22
32+
33+
- name: Install NASM
34+
if: runner.os == 'Linux'
35+
run: sudo apt-get install -y nasm
36+
37+
- name: Install dependencies
38+
run: npm install --ignore-scripts
39+
40+
- name: Build prebuilds
41+
run: npx prebuildify --strip --target=20.0.0 --target=22.0.0 --target=24.0.0
42+
43+
- name: Upload prebuilds
44+
uses: actions/upload-artifact@v4
45+
with:
46+
name: prebuilds-${{ matrix.os }}
47+
path: prebuilds/
48+
49+
# Collect all prebuilds into a single artifact
50+
collect:
51+
name: Collect prebuilds
52+
needs: prebuild
53+
runs-on: ubuntu-latest
54+
55+
steps:
56+
- uses: actions/checkout@v4
57+
58+
- name: Download all prebuilds
59+
uses: actions/download-artifact@v4
60+
with:
61+
path: prebuilds-all/
62+
pattern: prebuilds-*
63+
64+
- name: Merge prebuilds into prebuilds/
65+
run: |
66+
mkdir -p prebuilds
67+
for dir in prebuilds-all/prebuilds-*/; do
68+
cp -r "$dir"/* prebuilds/ 2>/dev/null || true
69+
done
70+
71+
- name: List prebuilds
72+
run: find prebuilds -type f | sort
73+
74+
- name: Upload merged prebuilds
75+
uses: actions/upload-artifact@v4
76+
with:
77+
name: prebuilds-all-platforms
78+
path: prebuilds/

0 commit comments

Comments
 (0)