Skip to content
Open
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
113 changes: 113 additions & 0 deletions .github/workflows/stress-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
name: Stress Test

on:
workflow_dispatch:
inputs:
test_path:
description: 'Test path or glob (e.g. test/parallel/test-debugger-break.js or "test/parallel/test-debugger-*")'
required: true
type: string
os:
description: 'Runner to use'
required: true
default: macos-15
type: choice
options:
- macos-15
- ubuntu-24.04
- ubuntu-24.04-arm
repeat:
description: 'Number of times to repeat each test (--repeat)'
required: true
default: '1000'
type: string
test_jobs:
description: 'Number of jobs to run in parallel (-j).'
required: true
default: '1'
type: string
test_args:
description: 'Extra args for tools/test.py, space-separated (e.g. "-t 10 --worker")'
required: false
default: ''
type: string

env:
PYTHON_VERSION: '3.14'
XCODE_VERSION: '16.4'
CLANG_VERSION: '19'
RUSTC_VERSION: '1.82'

permissions:
contents: read

jobs:
stress-test:
runs-on: ${{ inputs.os }}
env:
# Linux builds with clang (matching test-linux.yml), macOS with gcc/g++.
CC: ${{ startsWith(inputs.os, 'ubuntu') && 'sccache clang-19' || 'sccache gcc' }}
CXX: ${{ startsWith(inputs.os, 'ubuntu') && 'sccache clang++-19' || 'sccache g++' }}
SCCACHE_GHA_ENABLED: ${{ github.base_ref == 'main' || github.ref_name == 'main' }}
SCCACHE_IDLE_TIMEOUT: '0'
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
path: node
- name: Install Clang ${{ env.CLANG_VERSION }}
if: runner.os == 'Linux'
uses: ./node/.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Set up Xcode ${{ env.XCODE_VERSION }}
if: runner.os == 'macOS'
run: sudo xcode-select -s /Applications/Xcode_${{ env.XCODE_VERSION }}.app
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ env.PYTHON_VERSION }}
allow-prereleases: true
- name: Install Rust ${{ env.RUSTC_VERSION }}
run: |
rustup override set "$RUSTC_VERSION"
rustup --version
- name: Set up sccache
uses: Mozilla-Actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
with:
version: v0.16.0
Comment thread
joyeecheung marked this conversation as resolved.
- name: Environment Information
run: npx envinfo@7.21.0
# This is needed due to https://github.com/nodejs/build/issues/3878
- name: Cleanup
if: runner.os == 'macOS'
run: |
echo "::group::Free space before cleanup"
df -h
echo "::endgroup::"
echo "::group::Cleaned Files"

sudo rm -rf /Users/runner/Library/Android/sdk

echo "::endgroup::"
echo "::group::Free space after cleanup"
df -h
echo "::endgroup::"
- name: Build
run: make -C node build-ci -j"$(getconf _NPROCESSORS_ONLN)" V=1 CONFIG_FLAGS="--error-on-warn --v8-enable-temporal-support"
- name: Stress run ${{ inputs.test_path }} x${{ inputs.repeat }}
shell: bash
env:
REPEAT: ${{ inputs.repeat }}
JOBS: ${{ inputs.test_jobs }}
TEST_ARGS: ${{ inputs.test_args }}
TEST_PATH: ${{ inputs.test_path }}
run: |
cd node
read -ra EXTRA_ARGS <<< "$TEST_ARGS"
python3 tools/test.py \
--repeat "$REPEAT" \
-j "$JOBS" \
-p actions \
"${EXTRA_ARGS[@]}" \
"$TEST_PATH"
Loading