Skip to content

Commit 17894bd

Browse files
authored
Merge pull request #1186 from recrsn/v6-release
Prepare for v6
2 parents cf4269a + 473c150 commit 17894bd

File tree

10 files changed

+604
-444
lines changed

10 files changed

+604
-444
lines changed

.github/workflows/build-pack-publish.yml

Lines changed: 70 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -9,62 +9,69 @@ on:
99
types: [ prereleased, released ]
1010

1111
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
1914
steps:
2015
- 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]
5124
- run: find prebuilds
52-
- uses: actions/upload-artifact@v3
25+
- uses: actions/upload-artifact@v4
5326
with:
54-
name: prebuild-${{ matrix.os }}-${{ matrix.arch }}
55-
path: ./prebuilds
27+
name: prebuild-linux
28+
path: ./prebuilds/
5629

57-
pack:
58-
needs: build
59-
runs-on: ubuntu-22.04
30+
build-windows:
31+
runs-on: windows-latest
6032
steps:
6133
- uses: actions/checkout@v4
62-
- uses: actions/setup-node@v3
34+
- uses: actions/setup-node@v4
6335
with:
6436
node-version: 20
6537
registry-url: 'https://registry.npmjs.org'
6638
- 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
6875
with:
6976
path: /tmp/prebuilds/
7077
- name: Coalesce prebuilds from build matrix
@@ -74,51 +81,30 @@ jobs:
7481
cp -Rav $d/* prebuilds/
7582
done
7683
- 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
7989
with:
8090
name: package-tgz
81-
path: ${{ env.PACK_FILE }}
91+
path: ${{ steps.pack.outputs.PACK_FILE }}
92+
if-no-files-found: 'error'
8293

83-
publish-npm:
94+
test-package:
8495
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 }}
87101
steps:
88-
- uses: actions/checkout@v4
89-
- uses: actions/setup-node@v3
102+
- uses: actions/setup-node@v4
90103
with:
91-
node-version: 20
104+
node-version: ${{ matrix.node-version }}
92105
registry-url: 'https://registry.npmjs.org'
93-
- uses: actions/download-artifact@v2
106+
- uses: actions/download-artifact@v4
94107
with:
95108
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))"

.github/workflows/ci.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,25 @@ on:
1010

1111
jobs:
1212
build:
13-
runs-on: ubuntu-22.04
13+
runs-on: ubuntu-latest
1414
strategy:
1515
matrix:
16-
node-version: [18, 20]
16+
node-version: [18, 20, 22]
1717
steps:
1818
- uses: actions/checkout@v4
1919
- name: Use Node.js ${{ matrix.node-version }}
20-
uses: actions/setup-node@v3
20+
uses: actions/setup-node@v4
2121
with:
2222
node-version: ${{ matrix.node-version }}
2323
- run: npm ci
2424
- name: Test
2525
run: npm test
2626

2727
build-alpine:
28-
runs-on: ubuntu-22.04
28+
runs-on: ubuntu-latest
2929
strategy:
3030
matrix:
31-
node-version: [18, 20]
31+
node-version: [18, 20, 22]
3232
container:
3333
image: node:${{ matrix.node-version }}-alpine
3434
steps:

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# 6.0.0 (2025-02-28)
2+
* Drop support for NodeJS <= 16
3+
* Remove `node-pre-gyp` in favor of `prebuildify`, prebuilt binaries are now shipped with the package
4+
* Update `node-addon-api` to 8.3.0
5+
* Update JS code to newer ES syntax
6+
17
# 5.1.0 (2022-10-06)
28
* Update `node-pre-gyp` to 1.0.11
39

0 commit comments

Comments
 (0)