@@ -32,23 +32,27 @@ jobs:
3232 - host : windows-latest
3333 architecture : x86
3434 build : |
35- npx lerna exec "yarn build --target i686-pc-windows-msvc" --concurrency 1 --stream --no-prefix
35+ yarn global add lerna
36+ lerna exec "yarn build --target i686-pc-windows-msvc" --concurrency 1 --stream --no-prefix
3637 yarn test
3738 target : ' i686-pc-windows-msvc'
38- - host : macos -latest
39+ - host : ubuntu -latest
3940 architecture : x64
4041 target : ' x86_64-unknown-linux-gnu'
41- setup : |
42- yarn global add lerna --registry https://registry.npmjs.org --network-timeout 300000
43- build : |
44- lerna exec "yarn build --target x86_64-unknown-linux-gnu --zig --zig-abi-suffix 2.17 --strip" --concurrency 1 --stream --no-prefix
42+ docker : ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine-zig
43+ # Node.js in Baidu need to compatible with `GLIBC_2.12`
44+ build : >-
45+ set -e &&
46+ rustup toolchain install $(cat ./rust-toolchain) &&
47+ rustup target add x86_64-unknown-linux-gnu &&
48+ yarn global add lerna &&
49+ lerna exec "yarn build --target x86_64-unknown-linux-gnu --zig --zig-abi-suffix 2.12" --concurrency 1 --stream --no-prefix &&
50+ llvm-strip -x packages/*/*.node
4551 - host : ubuntu-latest
4652 architecture : x64
4753 target : ' x86_64-unknown-linux-musl'
48- docker : |
49- docker pull $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-alpine
50- docker tag $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-alpine builder
51- build : docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder yarn build
54+ docker : ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
55+ build : yarn build
5256 - host : macos-latest
5357 architecture : x64
5458 target : ' aarch64-apple-darwin'
@@ -58,22 +62,29 @@ jobs:
5862 export CXX=$(xcrun -f clang++);
5963 SYSROOT=$(xcrun --sdk macosx --show-sdk-path);
6064 export CFLAGS="-isysroot $SYSROOT -isystem $SYSROOT";
61- npx lerna exec "yarn build --target aarch64-apple-darwin" --concurrency 1 --stream --no-prefix
65+ yarn global add lerna
66+ lerna exec "yarn build --target aarch64-apple-darwin" --concurrency 1 --stream --no-prefix
6267 strip -x packages/*/*.node
6368 - host : ubuntu-latest
6469 architecture : x64
6570 target : ' aarch64-unknown-linux-gnu'
66- setup : |
67- sudo apt-get update
68- sudo apt-get install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu -y
69- build : npx lerna exec "yarn build --target aarch64-unknown-linux-gnu" --concurrency 1 --stream --no-prefix
70- - host : ubuntu-latest
71+ docker : ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine-zig
72+ build : >-
73+ set -e &&
74+ rustup toolchain install $(cat ./rust-toolchain) &&
75+ rustup target add aarch64-unknown-linux-gnu &&
76+ yarn global add lerna &&
77+ lerna exec "yarn build --target aarch64-unknown-linux-gnu --zig --zig-abi-suffix 2.17" --concurrency 1 --stream --no-prefix &&
78+ llvm-strip -x packages/*/*.node
79+ - host : ubuntu-18.04
7180 architecture : x64
7281 target : ' armv7-unknown-linux-gnueabihf'
7382 setup : |
7483 sudo apt-get update
7584 sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y
76- build : npx lerna exec "yarn build --target armv7-unknown-linux-gnueabihf" --concurrency 1 --stream --no-prefix
85+ build : |
86+ yarn global add lerna
87+ lerna exec "yarn build --target armv7-unknown-linux-gnueabihf" --concurrency 1 --stream --no-prefix
7788 - host : ubuntu-latest
7889 architecture : x64
7990 target : aarch64-linux-android
8293 export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
8394 export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++"
8495 export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"
85- npx lerna exec "yarn build --target aarch64-linux-android" --concurrency 1 --stream --no-prefix
96+ yarn global add lerna
97+ lerna exec "yarn build --target aarch64-linux-android" --concurrency 1 --stream --no-prefix
8698 - host : ubuntu-latest
8799 architecture : x64
88100 target : armv7-linux-androideabi
@@ -91,19 +103,25 @@ jobs:
91103 export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
92104 export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++"
93105 export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"
94- npx lerna exec "yarn build --target armv7-linux-androideabi" --concurrency 1 --stream --no-prefix
106+ yarn global add lerna
107+ lerna exec "yarn build --target armv7-linux-androideabi" --concurrency 1 --stream --no-prefix
95108 - host : ubuntu-latest
96109 architecture : x64
97110 target : ' aarch64-unknown-linux-musl'
98111 downloadTarget : ' aarch64-unknown-linux-musl'
99- docker : |
100- docker pull ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
101- docker tag ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine builder
102- build : docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/node-rs -w /node-rs builder sh -c "rustup toolchain install $(cat ./rust-toolchain) && rustup target add aarch64-unknown-linux-musl && yarn global add lerna && lerna exec \"yarn build --target aarch64-unknown-linux-musl\" --concurrency 1 --stream --no-prefix"
112+ docker : ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
113+ build : >-
114+ set -e &&
115+ rustup toolchain install $(cat ./rust-toolchain) &&
116+ rustup target add aarch64-unknown-linux-musl &&
117+ yarn global add lerna &&
118+ lerna exec "yarn build --target aarch64-unknown-linux-musl" --concurrency 1 --stream --no-prefix
103119 - host : windows-latest
104120 architecture : x64
105121 target : ' aarch64-pc-windows-msvc'
106- build : npx lerna exec "yarn build --target aarch64-pc-windows-msvc" --concurrency 1 --stream --no-prefix
122+ build : |
123+ yarn global add lerna
124+ lerna exec "yarn build --target aarch64-pc-windows-msvc" --concurrency 1 --stream --no-prefix
107125
108126 name : stable - ${{ matrix.settings.target }} - node@16
109127 runs-on : ${{ matrix.settings.host }}
@@ -113,6 +131,7 @@ jobs:
113131
114132 - name : Setup node
115133 uses : actions/setup-node@v2
134+ if : ${{ !matrix.settings.docker }}
116135 with :
117136 node-version : 16
118137 check-latest : true
@@ -121,47 +140,35 @@ jobs:
121140
122141 - name : Install
123142 uses : actions-rs/toolchain@v1
143+ if : ${{ !matrix.settings.docker }}
124144 with :
125145 profile : minimal
126146 override : true
127147 target : ${{ matrix.settings.target }}
128148
129- - name : Install Zig toolchain
130- uses : goto-bus-stop/setup-zig@v1
131- if : matrix.settings.target == 'x86_64-unknown-linux-gnu'
132- with :
133- version : 0.9.0
134-
135149 - name : Generate Cargo.lock
136150 uses : actions-rs/cargo@v1
151+ if : ${{ !matrix.settings.docker }}
137152 with :
138153 command : generate-lockfile
139154
140155 - name : Cache cargo registry
141156 uses : actions/cache@v2
142157 with :
143158 path : ~/.cargo/registry
144- key : ${{ matrix.settings.target }}-node@16- cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
159+ key : ${{ matrix.settings.target }}-cargo-registry
145160
146161 - name : Cache cargo index
147162 uses : actions/cache@v2
148163 with :
149164 path : ~/.cargo/git
150- key : ${{ matrix.settings.target }}-node@16- cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
165+ key : ${{ matrix.settings.target }}-cargo-index
151166
152167 - name : Cache NPM dependencies
153168 uses : actions/cache@v2
154169 with :
155170 path : node_modules
156- key : npm-cache-${{ matrix.settings.target }}-node@16-${{ hashFiles('yarn.lock') }}
157-
158- - name : Pull latest image
159- run : ${{ matrix.settings.docker }}
160- env :
161- DOCKER_REGISTRY_URL : ghcr.io
162- DOCKER_USERNAME : ${{ github.actor }}
163- DOCKER_PASSWORD : ${{ secrets.GITHUB_TOKEN }}
164- if : ${{ matrix.settings.docker }}
171+ key : npm-cache-build-${{ matrix.settings.target }}-node@16
165172
166173 - name : Setup toolchain
167174 run : ${{ matrix.settings.setup }}
@@ -174,8 +181,17 @@ jobs:
174181 - name : ' Build TypeScript'
175182 run : yarn build:ts
176183
184+ - name : Build in docker
185+ uses : addnab/docker-run-action@v3
186+ if : ${{ matrix.settings.docker }}
187+ with :
188+ image : ${{ matrix.settings.docker }}
189+ options : -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry -v ${{ github.workspace }}:/build -w /build
190+ run : ${{ matrix.settings.build }}
191+
177192 - name : ' Build'
178193 run : ${{ matrix.settings.build }}
194+ if : ${{ !matrix.settings.docker }}
179195 shell : bash
180196
181197 - name : Upload artifact
0 commit comments