55
66jobs :
77 build-test :
8- name : Build & Test (${{ matrix.os }})
8+ name : Build & Test (${{ matrix.os }}${{ matrix.cross && ' xarch' || '' }} )
99 runs-on : ${{ matrix.os }}
1010 strategy :
1111 fail-fast : false
1212 matrix :
1313 os : [ubuntu-22.04, macos-14, windows-2022]
14+ cross : [false, true]
1415 steps :
1516 - name : Checkout
1617 uses : actions/checkout@v4
@@ -22,19 +23,38 @@ jobs:
2223 with :
2324 node-version : ' 22.x'
2425
26+ - name : Set architecture
27+ id : arch
28+ shell : bash
29+ run : |
30+ if [ "${{ runner.os }}" = "macOS" ]; then
31+ echo "arch=${{ matrix.cross && 'x64' || 'arm64' }}" >> $GITHUB_OUTPUT
32+ else
33+ echo "arch=${{ matrix.cross && 'arm64' || 'x64' }}" >> $GITHUB_OUTPUT
34+ fi
35+
2536 - name : Install sysroot
2637 if : runner.os == 'Linux'
2738 run : |
2839 sudo apt-get update -qq
29- sudo apt-get install -y gcc-10 g++-10
30- SYSROOT_PATH=$(node scripts/linux/install-sysroot.js x64 | grep "SYSROOT_PATH=" | cut -d= -f2)
40+ if [ "${{ steps.arch.outputs.arch }}" = "arm64" ]; then
41+ sudo apt-get install -y gcc-10-aarch64-linux-gnu g++-10-aarch64-linux-gnu
42+ echo "CC=aarch64-linux-gnu-gcc-10" >> $GITHUB_ENV
43+ echo "CXX=aarch64-linux-gnu-g++-10" >> $GITHUB_ENV
44+ else
45+ sudo apt-get install -y gcc-10 g++-10
46+ echo "CC=gcc-10" >> $GITHUB_ENV
47+ echo "CXX=g++-10" >> $GITHUB_ENV
48+ fi
49+ SYSROOT_PATH=$(node scripts/linux/install-sysroot.js ${{ steps.arch.outputs.arch }} | grep "SYSROOT_PATH=" | cut -d= -f2)
3150 echo "SYSROOT_PATH=$SYSROOT_PATH" >> $GITHUB_ENV
3251 echo "Sysroot path set to: $SYSROOT_PATH"
33- echo "CC=gcc-10" >> $GITHUB_ENV
34- echo "CXX=g++-10" >> $GITHUB_ENV
3552
3653 - name : Install dependencies and build
3754 run : npm ci
55+ env :
56+ ARCH : ${{ steps.arch.outputs.arch }}
57+ npm_config_arch : ${{ steps.arch.outputs.arch }}
3858
3959 - name : Verify GLIBC requirements
4060 if : runner.os == 'Linux'
4565 ./scripts/linux/verify-glibc-requirements.sh
4666
4767 - name : Test
68+ if : ${{ !matrix.cross }}
4869 run : npm test
4970
5071 - name : Lint
72+ if : ${{ !matrix.cross }}
5173 run : npm run lint
0 commit comments