Skip to content

Commit 9fa0d54

Browse files
phenylshimaiCrawl
andauthored
feat(ci): add prebuilt binaries for linux aarch64 (#122)
* feat(ci): add prebuilt binaries for aarch64 * Update .github/workflows/release.yml Co-authored-by: Noel <buechler.noel@outlook.com> * fix typo Co-authored-by: Noel <buechler.noel@outlook.com>
1 parent 406249f commit 9fa0d54

File tree

1 file changed

+75
-4
lines changed

1 file changed

+75
-4
lines changed

.github/workflows/release.yml

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ on:
33
release:
44
types: [published]
55
jobs:
6-
build:
7-
name: Prebuild
6+
build_x86_64:
7+
name: Prebuild x86_64
88
runs-on: ${{ matrix.os }}
99
strategy:
1010
matrix:
@@ -32,8 +32,8 @@ jobs:
3232
with:
3333
path: "build/stage/**/*.tar.gz"
3434

35-
build_musl:
36-
name: Prebuild (musl)
35+
build_musl_x86_64:
36+
name: Prebuild x86_64(musl)
3737
runs-on: ubuntu-latest
3838
container:
3939
image: node:${{ matrix.node }}-alpine
@@ -61,3 +61,74 @@ jobs:
6161
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6262
with:
6363
path: "build/stage/**/*.tar.gz"
64+
65+
66+
build_aarch64:
67+
name: Prebuild aarch64
68+
runs-on: ${{ matrix.os }}
69+
strategy:
70+
matrix:
71+
os: [ubuntu-20.04, ubuntu-18.04]
72+
node: [12, 13, 14, 15, 16]
73+
steps:
74+
- name: Checkout repository
75+
uses: actions/checkout@v2
76+
77+
- name: Install Node v${{ matrix.node }}
78+
uses: actions/setup-node@v2
79+
with:
80+
node-version: ${{ matrix.node }}
81+
82+
- name: Install dependencies
83+
run: npm install --build-from-source
84+
85+
- name: Package prebuild
86+
run: |
87+
sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
88+
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ npx node-pre-gyp --target_arch=arm64 configure build package
89+
90+
- name: Upload prebuild asset
91+
uses: icrawl/action-artifact@v2
92+
env:
93+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
94+
with:
95+
path: "build/stage/**/*.tar.gz"
96+
97+
build_musl_aarch64:
98+
name: Prebuild aarch64(musl)
99+
runs-on: ubuntu-latest
100+
container:
101+
image: node:${{ matrix.node }}-alpine
102+
strategy:
103+
matrix:
104+
node: [12, 13, 14, 15, 16]
105+
steps:
106+
- name: Setup env with Node v${{ matrix.node }}
107+
run: |
108+
apk add --update
109+
apk add --no-cache ca-certificates git curl build-base python3 g++ make
110+
111+
- name: Checkout repository
112+
uses: actions/checkout@v2
113+
114+
- name: Setup musl cross compiler
115+
run: |
116+
curl -OL https://musl.cc/aarch64-linux-musl-cross.tgz
117+
tar -xzvf aarch64-linux-musl-cross.tgz
118+
$(pwd)/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc --version
119+
120+
- name: Install dependencies
121+
run: npm install --unsafe-perm --build-from-source
122+
123+
- name: Package prebuild
124+
run: |
125+
CC=$(pwd)/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc \
126+
CXX=$(pwd)/aarch64-linux-musl-cross/bin/aarch64-linux-musl-g++ \
127+
npx node-pre-gyp --target_arch=arm64 configure build package
128+
129+
- name: Upload prebuild asset
130+
uses: icrawl/action-artifact@v2
131+
env:
132+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
133+
with:
134+
path: "build/stage/**/*.tar.gz"

0 commit comments

Comments
 (0)