Skip to content

chore(deps): update node.js to v24.8.0 #1360

chore(deps): update node.js to v24.8.0

chore(deps): update node.js to v24.8.0 #1360

Workflow file for this run

name: Binary builds
on:
pull_request:
paths:
- '.github/workflows/binary-builds.yml'
- '.nvmrc'
- '.pnpmfile.cjs'
- 'bin/**'
- 'data/**'
- 'index.cjs'
- 'lib/**'
- 'package.json'
- 'pnpm-lock.yaml'
- '!**.poku.js'
push:
branches:
- release/*
tags:
- 'v*'
paths:
- '.github/workflows/binary-builds.yml'
- '.nvmrc'
- '.pnpmfile.cjs'
- 'bin/**'
- 'data/**'
- 'index.cjs'
- 'lib/**'
- 'package.json'
- 'pnpm-lock.yaml'
- '!**.poku.js'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
NVM_VERSION: v0.40.3
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token
permissions: {}
jobs:
binaries:
if: github.repository == 'CycloneDX/cdxgen'
strategy:
fail-fast: false
matrix:
os: [ darwin, linux, windows ]
arch: [ amd64, arm64]
libc: [ gnu, musl ]
exclude:
# musl can only be built on linux
- os: darwin
libc: musl
- os: windows
libc: musl
include:
# Set all the runners
- os: darwin
arch: amd64
runner: macos-13
- os: darwin
arch: arm64
runner: macos-13-xlarge
- os: linux
arch: amd64
runner: ubuntu-24.04
- os: linux
arch: arm64
runner: ubuntu-24.04-arm
- os: windows
arch: amd64
runner: windows-2022
- os: windows
arch: arm64
runner: windows-11-arm
# Set musl configurations
- image: php:8.4-bullseye
libc-suffix: ''
node-download-url: https://nodejs.org/dist/
prepare: |
apt update
apt install -y curl
- libc: musl
image: php:8.4-alpine3.21
libc-suffix: -musl
node-download-url: https://raw.githubusercontent.com/appthreat/nodejs-unofficial-builds/main/dists/
prepare: |
apk add --no-cache bash curl libstdc++
# Set the commands & file-extensions
- cmd: |
# Prepare workspace
rm -rf ADVANCED.md ci contrib devenv.* pyproject.toml renovate.json semicolon_delimited_script test tools_config uv.lock
pnpm install:prod --config.node-linker=hoisted
# Generate sbom
node bin/cdxgen.js -t jar -t js -t php -t ruby -o sbom-postbuild.cdx.json --include-formulation
# Produce cdxgen binary
pnpm --package=@appthreat/caxa dlx caxa --input . --output cdxgen -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/bin/cdxgen.js"
chmod +x cdxgen
./cdxgen --version
./cdxgen --help
# Prepare for slim binaries
rm -rf node_modules sbom-postbuild.cdx.json
pnpm install:prod --config.node-linker=hoisted --no-optional
# Generate sbom
node bin/cdxgen.js -t js --required-only --no-recurse -o sbom-postbuild-js.cdx.json --include-formulation
# Produce slim cdxgen binary
pnpm --package=@appthreat/caxa dlx caxa --input . --output cdxgen-slim -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/bin/cdxgen.js"
chmod +x cdxgen-slim
./cdxgen-slim --version
./cdxgen-slim --help
# Produce verify binary
pnpm --package=@appthreat/caxa dlx caxa --input . --output cdx-verify -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/bin/verify.js"
chmod +x cdx-verify
./cdx-verify --version
./cdx-verify --help
ext: ''
- os: windows
cmd: |
# Prepare workspace
Remove-Item -Path ADVANCED.md,ci,contrib,devenv.*,pyproject.toml,renovate.json,test,tools_config,uv.lock -Force -Recurse
pnpm install:prod --config.node-linker=hoisted
# Generate sbom
node bin/cdxgen.js -t jar -t js -t php -t ruby -o sbom-postbuild.cdx.json --include-formulation
# Produce cdxgen binary
pnpm --package=@appthreat/caxa dlx caxa --input . --output cdxgen.exe -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/bin/cdxgen.js"
.\cdxgen.exe --version
.\cdxgen.exe --help
# Prepare for slim binaries
Remove-Item node_modules,sbom-postbuild.cdx.json -Force -Recurse
pnpm install:prod --config.node-linker=hoisted --no-optional
# Generate sbom
node bin/cdxgen.js -t js --required-only --no-recurse -o sbom-postbuild-js.cdx.json --include-formulation
# Produce slim cdxgen binary
pnpm --package=@appthreat/caxa dlx caxa --input . --output cdxgen-slim.exe -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/bin/cdxgen.js"
.\cdxgen-slim.exe --version
.\cdxgen-slim.exe --help
# Produce verify binary
pnpm --package=@appthreat/caxa dlx caxa --input . --output cdx-verify.exe -- "{{caxa}}/node_modules/.bin/node" "{{caxa}}/bin/verify.js"
.\cdx-verify.exe --version
.\cdx-verify.exe --help
ext: .exe
runs-on: ${{ matrix.runner }}
permissions:
contents: write # needed to issue a GH release or uploading release assets
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Setup pnpm
if: ${{ matrix.os != 'linux' }}
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- name: Use Node.js
if: ${{ matrix.os != 'linux' }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: .nvmrc
- name: Install composer
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # 2.35.5
if: ${{ matrix.os == 'darwin' }}
- name: Get user info
id: user_info
if: ${{ matrix.os == 'linux' }}
run: |
echo -n "user=$(id -u):$(id -g)" >> $GITHUB_OUTPUT
- name: Build for linux
uses: addnab/docker-run-action@4f65fabd2431ebc8d299f8e5a018d79a769ae185 # v3
if: ${{ matrix.os == 'linux' }}
with:
image: ${{ matrix.image }}
options: |
-e NVM_NODEJS_ORG_MIRROR=${{ matrix.node-download-url }}
--network host
-v ${{ github.workspace }}:${{ github.workspace }}
-w ${{ github.workspace }}
run: |
# Setup builder
${{ matrix.prepare }}
# Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/${{ env.NVM_VERSION }}/install.sh | bash
export NVM_DIR="$HOME/.nvm"
sed -i 's/x64-musl/"${NVM_ARCH}-musl"/g' "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# Install node
nvm install
# Install pnpm
npm install --global pnpm
# Install composer
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Build
${{ matrix.cmd }}
# Change the owner to the local user
chown -R ${{ steps.user_info.outputs.user }} * .*
- name: Build for darwin & windows
if: ${{ matrix.libc == 'gnu' && matrix.os != 'linux' }}
run: ${{ matrix.cmd }}
- name: Correct filenames # <name>-<os>-<arch>[-<libc-suffix>][-<variant>][.ext]
run: |
# Rename to temporary name -- fix for renaming to the same name, which does not work
mv cdxgen${{ matrix.ext }} _cdxgen
mv cdxgen-slim${{ matrix.ext }} _cdxgen-slim
mv cdx-verify${{ matrix.ext }} _cdx-verify
# Rename to the correct name
mv _cdxgen cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}
mv _cdxgen-slim cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}
mv _cdx-verify cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}
- name: Generate checksums for darwin
if: ${{ matrix.os == 'darwin' }}
run: |
shasum -a 256 cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }} > cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}.sha256
shasum -a 256 cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }} > cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}.sha256
shasum -a 256 cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }} > cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}.sha256
- name: Generate checksums for linux
if: ${{ matrix.os == 'linux' }}
run: |
sha256sum cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }} > cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}.sha256
sha256sum cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }} > cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}.sha256
sha256sum cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }} > cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}.sha256
- name: Generate checksums for windows
if: ${{ matrix.os == 'windows' }}
run: |
(Get-FileHash .\cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}).hash | Out-File -FilePath .\cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}.sha256
(Get-FileHash .\cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}).hash | Out-File -FilePath .\cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}.sha256
(Get-FileHash .\cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}).hash | Out-File -FilePath .\cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}.sha256
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}
path: cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}
if-no-files-found: error
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}
path: cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}
if-no-files-found: error
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}
path: cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}
if-no-files-found: error
- name: Release
uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2.3.3
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}
cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}.sha256
cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}
cdxgen-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}-slim${{ matrix.ext }}.sha256
cdx-verify-${{ matrix.os }}-${{ matrix.arch }}${{ matrix.libc-suffix }}${{ matrix.ext }}
retry:
needs: binaries
if: failure() && fromJSON(github.run_attempt) < 2
runs-on: ubuntu-latest
steps:
- run: gh workflow run rerun-workflow.yml -F run_id=${{ github.run_id }}
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.WORKFLOW_TOKEN }}