chore(deps): update node.js to v24.8.0 #1360
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |