9
9
types : [ prereleased, released ]
10
10
11
11
jobs :
12
-
13
- build :
14
- runs-on : ubuntu-22.04
15
- strategy :
16
- matrix :
17
- os : [linux]
18
- arch : [amd64, arm64, arm]
12
+ build-linux :
13
+ runs-on : ubuntu-latest
19
14
steps :
20
15
- uses : actions/checkout@v4
21
- - uses : docker/setup-qemu-action@v3
22
- with :
23
- image : tonistiigi/binfmt:latest
24
- platforms : arm,arm64
25
-
26
- - run : >
27
- docker build .
28
- --build-arg TEST_TIMEOUT_SECONDS=30
29
- --tag node-bcrypt-builder
30
- --platform ${{ matrix.os }}/${{ matrix.arch }}
31
- - run : >
32
- docker create
33
- --name node-bcryptjs-builder
34
- --platform ${{ matrix.os }}/${{ matrix.arch }}
35
- node-bcrypt-builder
36
- - run : docker cp "node-bcryptjs-builder:/usr/local/opt/bcrypt-js/prebuilds" .
37
-
38
- # build for Alpine:
39
- - run : >
40
- docker build -f Dockerfile-alpine .
41
- --build-arg TEST_TIMEOUT_SECONDS=30
42
- --tag node-bcrypt-builder-alpine
43
- --platform ${{ matrix.os }}/${{ matrix.arch }}
44
- - run : >
45
- docker create
46
- --name node-bcryptjs-builder-alpine
47
- --platform ${{ matrix.os }}/${{ matrix.arch }}
48
- node-bcrypt-builder-alpine
49
- - run : docker cp "node-bcryptjs-builder-alpine:/usr/local/opt/bcrypt-js/prebuilds" .
50
-
16
+ # This is unsafe, but we really don't use any other native dependencies
17
+ - run : npm ci
18
+ -
run :
docker run -u $(id -u):$(id -g) -v `pwd`:/input -w /input ghcr.io/prebuild/almalinux-devtoolset11 npx prebuildify --napi --tag-libc --strip [email protected]
19
+ -
run :
docker run -u $(id -u):$(id -g) -v `pwd`:/input -w /input ghcr.io/prebuild/alpine npx prebuildify --napi --tag-libc --strip [email protected]
20
+ -
run :
docker run -u $(id -u):$(id -g) -v `pwd`:/input -w /input ghcr.io/prebuild/linux-armv7 npx prebuildify --napi --tag-libc --strip [email protected]
21
+ -
run :
docker run -u $(id -u):$(id -g) -v `pwd`:/input -w /input ghcr.io/prebuild/linux-armv7l-musl npx prebuildify --napi --tag-libc --strip [email protected]
22
+ -
run :
docker run -u $(id -u):$(id -g) -v `pwd`:/input -w /input ghcr.io/prebuild/linux-arm64 npx prebuildify --napi --tag-libc --strip [email protected]
23
+ -
run :
docker run -u $(id -u):$(id -g) -v `pwd`:/input -w /input ghcr.io/prebuild/linux-arm64-musl npx prebuildify --napi --tag-libc --strip [email protected]
51
24
- run : find prebuilds
52
- - uses : actions/upload-artifact@v3
25
+ - uses : actions/upload-artifact@v4
53
26
with :
54
- name : prebuild-${{ matrix.os }}-${{ matrix.arch }}
55
- path : ./prebuilds
27
+ name : prebuild-linux
28
+ path : ./prebuilds/
56
29
57
- pack :
58
- needs : build
59
- runs-on : ubuntu-22.04
30
+ build-windows :
31
+ runs-on : windows-latest
60
32
steps :
61
33
- uses : actions/checkout@v4
62
- - uses : actions/setup-node@v3
34
+ - uses : actions/setup-node@v4
63
35
with :
64
36
node-version : 20
65
37
registry-url : ' https://registry.npmjs.org'
66
38
- run : npm ci
67
- - uses : actions/download-artifact@v2
39
+ -
run :
npx prebuildify --napi --strip --arch=x64 [email protected]
40
+ -
run :
npx prebuildify --napi --strip --arch=arm64 [email protected]
41
+ - run : dir prebuilds
42
+ - uses : actions/upload-artifact@v4
43
+ with :
44
+ name : prebuild-windows
45
+ path : ./prebuilds/
46
+
47
+ build-macos :
48
+ runs-on : macos-latest
49
+ steps :
50
+ - uses : actions/checkout@v4
51
+ - uses : actions/setup-node@v4
52
+ with :
53
+ node-version : 18
54
+ registry-url : ' https://registry.npmjs.org'
55
+ - run : npm ci
56
+ -
run :
npx prebuildify --napi --strip --arch=arm64 [email protected]
57
+ -
run :
npx prebuildify --napi --strip --arch=x64 [email protected]
58
+ - run : find prebuilds
59
+ - uses : actions/upload-artifact@v4
60
+ with :
61
+ name : prebuild-macos
62
+ path : ./prebuilds/
63
+
64
+ pack :
65
+ needs :
66
+ - build-linux
67
+ - build-windows
68
+ - build-macos
69
+ runs-on : ubuntu-latest
70
+ outputs :
71
+ PACK_FILE : ${{ steps.pack.outputs.PACK_FILE }}
72
+ steps :
73
+ - uses : actions/checkout@v4
74
+ - uses : actions/download-artifact@v4
68
75
with :
69
76
path : /tmp/prebuilds/
70
77
- name : Coalesce prebuilds from build matrix
@@ -74,51 +81,30 @@ jobs:
74
81
cp -Rav $d/* prebuilds/
75
82
done
76
83
- run : chmod a+x prebuilds/*/*.node && find prebuilds -executable -type f
77
- - run : echo "PACK_FILE=$(npm pack)" >> $GITHUB_ENV
78
- - uses : actions/upload-artifact@v3
84
+ - id : pack
85
+ name : Prepare NPM package
86
+ run : |
87
+ echo "PACK_FILE=$(npm pack)" >> "$GITHUB_OUTPUT"
88
+ - uses : actions/upload-artifact@v4
79
89
with :
80
90
name : package-tgz
81
- path : ${{ env.PACK_FILE }}
91
+ path : ${{ steps.pack.outputs.PACK_FILE }}
92
+ if-no-files-found : ' error'
82
93
83
- publish-npm :
94
+ test-package :
84
95
needs : pack
85
- if : github.event_name == 'release'
86
- runs-on : ubuntu-22.04
96
+ strategy :
97
+ matrix :
98
+ node-version : [ 18, 20, 22, 23 ]
99
+ os : [ ubuntu-latest, windows-latest, macos-latest ]
100
+ runs-on : ${{ matrix.os }}
87
101
steps :
88
- - uses : actions/checkout@v4
89
- - uses : actions/setup-node@v3
102
+ - uses : actions/setup-node@v4
90
103
with :
91
- node-version : 20
104
+ node-version : ${{ matrix.node-version }}
92
105
registry-url : ' https://registry.npmjs.org'
93
- - uses : actions/download-artifact@v2
106
+ - uses : actions/download-artifact@v4
94
107
with :
95
108
name : package-tgz
96
- path : /tmp/package/
97
- - run : npm publish /tmp/package/bcrypt*.tgz
98
- env :
99
- NODE_AUTH_TOKEN : ${{secrets.NPM_TOKEN}}
100
-
101
- publish-gpr :
102
- needs : pack
103
- if : github.event_name == 'release'
104
- runs-on : ubuntu-22.04
105
- permissions :
106
- contents : read
107
- packages : write
108
- steps :
109
- - uses : actions/checkout@v4
110
- - uses : actions/setup-node@v3
111
- with :
112
- node-version : 20
113
- registry-url : https://npm.pkg.github.com/
114
- - uses : actions/download-artifact@v2
115
- with :
116
- name : package-tgz
117
- path : /tmp/package/
118
- - run : npm publish /tmp/package/bcrypt*.tgz
119
- env :
120
- NODE_AUTH_TOKEN : ${{secrets.GITHUB_TOKEN}}
121
-
122
-
123
-
124
-
109
+ - run : npm install ${{ needs.pack.outputs.PACK_FILE }}
110
+ - run : node -e "const b = require('bcrypt'); const h = b.hashSync('hello', 10); console.log(h, b.compareSync('hello', h))"
0 commit comments