33 release :
44 types : [published]
55jobs :
6- build_x86_64 :
7- name : Prebuild x86_64
6+ build :
7+ name : Prebuild
88 runs-on : ${{ matrix.os }}
99 strategy :
1010 fail-fast : false
1111 matrix :
12- os : [macos-13, ubuntu-22.04, ubuntu-24.04, windows-2022]
12+ os : [macos-13, ubuntu-22.04, ubuntu-24.04, ubuntu-24.04-arm, windows-2022]
1313 node : [18, 20, 22, 24]
1414 steps :
1515 - name : Checkout repository
2323 node-version : ${{ matrix.node }}
2424
2525 - name : Install dependencies
26- run : npm install
27-
28- - name : Package prebuild
29- run : npm run build
30-
31- - name : Upload prebuild asset
32- uses : icrawl/action-artifact@v2
33- env :
34- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
35- with :
36- path : ' build/stage/**/*.tar.gz'
37-
38- build_musl_x86_64 :
39- name : Prebuild x86_64 (musl)
40- runs-on : ubuntu-latest
41- container :
42- image : node:${{ matrix.node }}-alpine
43- strategy :
44- fail-fast : false
45- matrix :
46- node : [18, 20, 22, 24]
47- steps :
48- - name : Setup env with Node v${{ matrix.node }}
49- run : |
50- apk add --update
51- apk add --no-cache ca-certificates git curl build-base python3 g++ make
52-
53- - name : Checkout repository
54- uses : actions/checkout@v4
55- with :
56- submodules : true
57-
58- - name : Install dependencies
59- run : npm install
26+ run : npm install --build-from-source
6027
6128 - name : Package prebuild
6229 run : npm run build
@@ -68,73 +35,38 @@ jobs:
6835 with :
6936 path : ' build/stage/**/*.tar.gz'
7037
71- build_aarch64_linux :
72- name : Prebuild aarch64 Linux
73- runs-on : ubuntu-24.04
38+ build_musl :
39+ name : Prebuild musl
40+ runs-on : ${{ matrix.os }}
7441 strategy :
7542 fail-fast : false
7643 matrix :
44+ os : [ubuntu-latest, ubuntu-24.04-arm]
7745 node : [18, 20, 22, 24]
7846 steps :
7947 - name : Checkout repository
8048 uses : actions/checkout@v4
8149 with :
8250 submodules : true
8351
84- - name : Install Node v${{ matrix.node }}
85- uses : actions/setup-node@v3
86- with :
87- node-version : ${{ matrix.node }}
88-
89- - name : Install dependencies
90- run : npm install --build-from-source
91-
92- - name : Package prebuild
52+ # Workaround https://github.com/actions/runner/issues/801
53+ - name : Setup container
9354 run : |
94- sudo apt update -y && sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
95- CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ npx node-pre-gyp --target_arch=arm64 configure build package
96-
97- - name : Upload prebuild asset
98- uses : icrawl/action-artifact@v2
99- env :
100- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
101- with :
102- path : ' build/stage/**/*.tar.gz'
55+ docker run --name runner --rm -it -d -v $PWD:/node-opus -w /node-opus node:${{ matrix.node }}-alpine
10356
104- build_musl_aarch64 :
105- name : Prebuild aarch64 (musl)
106- runs-on : ubuntu-latest
107- container :
108- image : node:${{ matrix.node }}-alpine
109- strategy :
110- fail-fast : false
111- matrix :
112- node : [18, 20, 22, 24]
113- steps :
11457 - name : Setup env with Node v${{ matrix.node }}
11558 run : |
116- apk add --update
117- apk add --no-cache ca-certificates git curl build-base python3 g++ make
118-
119- - name : Checkout repository
120- uses : actions/checkout@v4
121- with :
122- submodules : true
123-
124- - name : Setup musl cross compiler
125- run : |
126- curl -OL https://musl.cc/aarch64-linux-musl-cross.tgz
127- tar -xzvf aarch64-linux-musl-cross.tgz
128- $(pwd)/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc --version
59+ docker exec runner apk add --update
60+ docker exec runner apk add --no-cache ca-certificates git curl build-base python3 g++ make
12961
13062 - name : Install dependencies
131- run : npm install --unsafe-perm --build-from-source
63+ run : docker exec runner npm install --build-from-source
13264
13365 - name : Package prebuild
134- run : |
135- CC=$(pwd)/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc \
136- CXX=$(pwd)/aarch64-linux-musl-cross/bin/aarch64-linux-musl-g++ \
137- npx node-pre-gyp --target_arch=arm64 configure build package
66+ run : docker exec runner npm run build
67+
68+ - name : Stop container
69+ run : docker rm -f runner
13870
13971 - name : Upload prebuild asset
14072 uses : icrawl/action-artifact@v2
0 commit comments