@@ -40,17 +40,46 @@ jobs:
40
40
sudo apt-get update && \
41
41
sudo apt-get install -y software-properties-common git build-essential clang libssl-dev libkrb5-dev libc++-dev wget python3
42
42
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')"
44
44
- uses : actions/upload-artifact@v4
45
45
with :
46
46
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
48
77
retention-days : 14
49
78
50
79
# https://docs.npmjs.com/generating-provenance-statements#publishing-packages-with-provenance-via-github-actions
51
80
publish :
52
81
runs-on : ubuntu-latest
53
- needs : [build]
82
+ needs : [build, cross-compile ]
54
83
permissions :
55
84
id-token : write
56
85
steps :
@@ -71,13 +100,19 @@ jobs:
71
100
- name : copy libs
72
101
run : |
73
102
set -x
103
+ mkdir -p prebuilds/linux-arm64
104
+ mkdir -p prebuilds/linux-x64
105
+ mkdir -p prebuilds/darwin-arm64
74
106
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/
76
111
find ./prebuilds
77
112
- name : npm install
78
113
run : npm ci
79
114
- name : publish
80
115
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
82
117
env :
83
118
NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
0 commit comments