@@ -40,17 +40,46 @@ jobs:
4040 sudo apt-get update && \
4141 sudo apt-get install -y software-properties-common git build-essential clang libssl-dev libkrb5-dev libc++-dev wget python3
4242 npm ci
43- npx prebuildify --napi --strip -t "$(node --version | tr -d 'v')"
43+ npx prebuildify --napi --strip --tag-libc - t "$(node --version | tr -d 'v')"
4444 - uses : actions/upload-artifact@v4
4545 with :
4646 name : prebuild-${{ runner.os }}-${{ runner.arch }}
47- path : prebuilds
47+ path : ./prebuilds
48+ retention-days : 14
49+
50+ cross-compile :
51+ name : " cross compile linux/arm"
52+ runs-on : ubuntu-20.04
53+ steps :
54+ - uses : actions/checkout@v4
55+ - uses : docker/setup-qemu-action@v3
56+ - name : build linux glibc arm
57+ run : |
58+ docker build --platform=linux/arm64 --tag nodegit-linux-glibc-arm64 -f scripts/Dockerfile.debian .
59+ docker create --platform=linux/arm64 --name nodegit-linux-glibc-arm64 nodegit-linux-glibc-arm64
60+ docker cp "nodegit-linux-glibc-arm64:/app/prebuilds" .
61+ - name : build linux musl x64
62+ run : |
63+ docker build --platform=linux/amd64 --tag nodegit-linux-musl-amd64 -f scripts/Dockerfile.alpine .
64+ docker create --platform=linux/amd64 --name nodegit-linux-musl-amd64 nodegit-linux-musl-amd64
65+ docker cp "nodegit-linux-musl-amd64:/app/prebuilds" .
66+ - name : build linux musl arm
67+ run : |
68+ docker build --platform=linux/arm64 --tag nodegit-linux-musl-arm64 -f scripts/Dockerfile.alpine .
69+ docker create --platform=linux/arm64 --name nodegit-linux-musl-arm64 nodegit-linux-musl-arm64
70+ docker cp "nodegit-linux-musl-arm64:/app/prebuilds" .
71+ - name : " list the generated files"
72+ run : find prebuilds
73+ - uses : actions/upload-artifact@v4
74+ with :
75+ name : prebuild-linux-arm64
76+ path : ./prebuilds
4877 retention-days : 14
4978
5079 # https://docs.npmjs.com/generating-provenance-statements#publishing-packages-with-provenance-via-github-actions
5180 publish :
5281 runs-on : ubuntu-latest
53- needs : [build]
82+ needs : [build, cross-compile ]
5483 permissions :
5584 id-token : write
5685 steps :
@@ -71,13 +100,19 @@ jobs:
71100 - name : copy libs
72101 run : |
73102 set -x
103+ mkdir -p prebuilds/linux-arm64
104+ mkdir -p prebuilds/linux-x64
105+ mkdir -p prebuilds/darwin-arm64
74106 find ${{ steps.download.outputs.download-path }}
75- mv ${{ steps.download.outputs.download-path }}/*/* ./prebuilds
107+ mv ${{ steps.download.outputs.download-path}}/prebuild-Linux-X64/linux-x64/* ./prebuilds/linux-x64/
108+ mv ${{ steps.download.outputs.download-path}}/prebuild-linux-arm64/linux-arm64/* ./prebuilds/linux-arm64/
109+ mv ${{ steps.download.outputs.download-path}}/prebuild-linux-arm64/linux-x64/* ./prebuilds/linux-x64/
110+ mv ${{ steps.download.outputs.download-path}}/prebuild-macOS-ARM64/darwin-arm64/* ./prebuilds/darwin-arm64/
76111 find ./prebuilds
77112 - name : npm install
78113 run : npm ci
79114 - name : publish
80115 run : |
81- (cat "$NPM_CONFIG_USERCONFIG" || true) && echo "token: ${NODE_AUTH_TOKEN:0:10}" && npm publish --provenance --access public
116+ (cat "$NPM_CONFIG_USERCONFIG" || true) && npm publish --provenance --access public
82117 env :
83118 NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
0 commit comments