@@ -32,23 +32,27 @@ jobs:
32
32
- host : windows-latest
33
33
architecture : x86
34
34
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
36
37
yarn test
37
38
target : ' i686-pc-windows-msvc'
38
- - host : macos -latest
39
+ - host : ubuntu -latest
39
40
architecture : x64
40
41
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
45
51
- host : ubuntu-latest
46
52
architecture : x64
47
53
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
52
56
- host : macos-latest
53
57
architecture : x64
54
58
target : ' aarch64-apple-darwin'
@@ -58,22 +62,29 @@ jobs:
58
62
export CXX=$(xcrun -f clang++);
59
63
SYSROOT=$(xcrun --sdk macosx --show-sdk-path);
60
64
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
62
67
strip -x packages/*/*.node
63
68
- host : ubuntu-latest
64
69
architecture : x64
65
70
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
71
80
architecture : x64
72
81
target : ' armv7-unknown-linux-gnueabihf'
73
82
setup : |
74
83
sudo apt-get update
75
84
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
77
88
- host : ubuntu-latest
78
89
architecture : x64
79
90
target : aarch64-linux-android
82
93
export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
83
94
export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++"
84
95
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
86
98
- host : ubuntu-latest
87
99
architecture : x64
88
100
target : armv7-linux-androideabi
@@ -91,19 +103,25 @@ jobs:
91
103
export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
92
104
export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++"
93
105
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
95
108
- host : ubuntu-latest
96
109
architecture : x64
97
110
target : ' aarch64-unknown-linux-musl'
98
111
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
103
119
- host : windows-latest
104
120
architecture : x64
105
121
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
107
125
108
126
name : stable - ${{ matrix.settings.target }} - node@16
109
127
runs-on : ${{ matrix.settings.host }}
@@ -113,6 +131,7 @@ jobs:
113
131
114
132
- name : Setup node
115
133
uses : actions/setup-node@v2
134
+ if : ${{ !matrix.settings.docker }}
116
135
with :
117
136
node-version : 16
118
137
check-latest : true
@@ -121,47 +140,35 @@ jobs:
121
140
122
141
- name : Install
123
142
uses : actions-rs/toolchain@v1
143
+ if : ${{ !matrix.settings.docker }}
124
144
with :
125
145
profile : minimal
126
146
override : true
127
147
target : ${{ matrix.settings.target }}
128
148
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
-
135
149
- name : Generate Cargo.lock
136
150
uses : actions-rs/cargo@v1
151
+ if : ${{ !matrix.settings.docker }}
137
152
with :
138
153
command : generate-lockfile
139
154
140
155
- name : Cache cargo registry
141
156
uses : actions/cache@v2
142
157
with :
143
158
path : ~/.cargo/registry
144
- key : ${{ matrix.settings.target }}-node@16- cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
159
+ key : ${{ matrix.settings.target }}-cargo-registry
145
160
146
161
- name : Cache cargo index
147
162
uses : actions/cache@v2
148
163
with :
149
164
path : ~/.cargo/git
150
- key : ${{ matrix.settings.target }}-node@16- cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
165
+ key : ${{ matrix.settings.target }}-cargo-index
151
166
152
167
- name : Cache NPM dependencies
153
168
uses : actions/cache@v2
154
169
with :
155
170
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
165
172
166
173
- name : Setup toolchain
167
174
run : ${{ matrix.settings.setup }}
@@ -174,8 +181,17 @@ jobs:
174
181
- name : ' Build TypeScript'
175
182
run : yarn build:ts
176
183
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
+
177
192
- name : ' Build'
178
193
run : ${{ matrix.settings.build }}
194
+ if : ${{ !matrix.settings.docker }}
179
195
shell : bash
180
196
181
197
- name : Upload artifact
0 commit comments