Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 52 additions & 16 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,22 @@ on:
jobs:
prebuilds:
name: create prebuilds
permissions:
contents: read
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
opts: [""]
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest]
arch: [""]
include:
# macos-latest is arm64; cross-compile for x64 too
- os: macos-latest
opts: "--arch arm64"
arch: "--arch x86_64"
runs-on: ${{ matrix.os }}
steps:
- name: checkout
uses: actions/checkout@v3
uses: actions/checkout@v6
- name: node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: 22
cache: "npm"
Expand All @@ -32,26 +35,59 @@ jobs:
run: npm ci
- name: build
run: |
npm run prebuild --workspace=@jazzer.js/fuzzer -- ${{ matrix.opts }}
npm run build --workspace=@jazzer.js/fuzzer -- ${{ matrix.opts }}
npm run prebuild --workspace=@jazzer.js/fuzzer -- ${{ matrix.arch }}
npm run build --workspace=@jazzer.js/fuzzer -- ${{ matrix.arch }}
- name: upload
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v7
with:
name: native-addon
name: native-addon-${{ matrix.os }}${{ matrix.arch && '-x64' || '' }}
path: packages/fuzzer/prebuilds
if-no-files-found: error

release:
name: release
verify-prebuilds:
name: verify prebuilds
needs: [prebuilds]
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: download prebuilds
uses: actions/download-artifact@v8
with:
pattern: native-addon-*
path: prebuilds
merge-multiple: true
- name: verify all platforms are present
run: |
expected="fuzzer-darwin-arm64.node fuzzer-darwin-x64.node fuzzer-linux-arm64.node fuzzer-linux-x64.node fuzzer-win32-x64.node"
for f in $expected; do
if [ ! -f "prebuilds/$f" ]; then
echo "MISSING: $f"
exit 1
fi
done
expected_count=$(echo $expected | wc -w)
actual_count=$(ls prebuilds/ | wc -l)
if [ "$actual_count" -ne "$expected_count" ]; then
echo "Expected $expected_count prebuilds but found $actual_count:"
ls -lh prebuilds/
exit 1
fi
echo "Verified $expected_count prebuilds. All as expected:"
ls -lh prebuilds/

publish:
name: publish
if: startsWith(github.ref, 'refs/tags/')
needs: [verify-prebuilds]
runs-on: ubuntu-latest
permissions:
contents: write # for creating releases
steps:
- name: checkout
uses: actions/checkout@v3
uses: actions/checkout@v6
- name: node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: 22
cache: "npm"
Expand All @@ -61,11 +97,11 @@ jobs:
- name: build
run: npm run build
- name: download prebuilds
uses: actions/download-artifact@v3
uses: actions/download-artifact@v8
with:
name: native-addon
pattern: native-addon-*
path: packages/fuzzer/prebuilds
if-no-files-found: error
merge-multiple: true
- name: publish
run: npm publish --workspaces --access public
env:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/run-all-tests-main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- uses: actions/cache@v3
uses: actions/checkout@v6
- uses: actions/cache@v5
id: cache-fuzzer
with:
path: |
Expand All @@ -23,7 +23,7 @@ jobs:
hashFiles('packages/fuzzer/CMakeLists.txt',
'packages/fuzzer/**/*.h', 'packages/fuzzer/**/*.cpp') }}
- name: node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: 22
cache: "npm"
Expand Down
57 changes: 43 additions & 14 deletions .github/workflows/run-all-tests-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ on:
branches: [main]
merge_group:
workflow_dispatch:

permissions:
contents: read

concurrency:
group:
${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
Expand All @@ -14,9 +18,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
uses: actions/checkout@v6
- name: node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: 22
cache: "npm"
Expand All @@ -38,7 +42,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
os: [windows-latest, ubuntu-latest, ubuntu-24.04-arm, macos-latest]
node: [20]
include:
# Node 14 runtime compatibility is covered by end-to-end tests.
Expand All @@ -48,8 +52,8 @@ jobs:
node: 24
steps:
- name: checkout
uses: actions/checkout@v3
- uses: actions/cache@v3
uses: actions/checkout@v6
- uses: actions/cache@v5
id: cache-fuzzer
with:
path: |
Expand All @@ -59,7 +63,7 @@ jobs:
hashFiles('packages/fuzzer/CMakeLists.txt',
'packages/fuzzer/**/*.h', 'packages/fuzzer/**/*.cpp') }}
- name: node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
cache: "npm"
Expand All @@ -81,13 +85,13 @@ jobs:
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest]
steps:
- name: checkout
uses: actions/checkout@v3
uses: actions/checkout@v6
# Build with node.js 22
- name: node
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: 22
cache: "npm"
Expand All @@ -103,26 +107,51 @@ jobs:

# Run with different node.js versions
# all in one job to avoid rebuilding
# Node 14 only has binaries for x64 runners
- name: "node 14"
if: matrix.os != 'macos-latest'
uses: actions/setup-node@v3
if: matrix.os == 'ubuntu-latest' || matrix.os == 'windows-latest'
uses: actions/setup-node@v6
with:
node-version: 14
- name: run tests (node 14)
if: matrix.os != 'macos-latest'
if: matrix.os == 'ubuntu-latest' || matrix.os == 'windows-latest'
run: cd end-to-end && npx jest
shell: bash

- name: "node 16"
uses: actions/setup-node@v6
with:
node-version: 16
- name: run tests (node 16)
run: cd end-to-end && npx jest
shell: bash

- name: "node 18"
uses: actions/setup-node@v6
with:
node-version: 18
- name: run tests (node 18)
run: cd end-to-end && npx jest
shell: bash

- name: "node 20"
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: 20
- name: run tests (node 20)
run: cd end-to-end && npx jest
shell: bash

- name: "node 22"
uses: actions/setup-node@v6
with:
node-version: 22
- name: run tests (node 22)
run: cd end-to-end && npx jest
shell: bash

- name: "node 24"
uses: actions/setup-node@v3
uses: actions/setup-node@v6
with:
node-version: 24
- name: run tests (node 24)
Expand Down
Loading
Loading