mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 10:15:07 +08:00
Signed-off-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com> PR-URL: https://github.com/nodejs/node/pull/65750 Reviewed-By: Richard Lau <richard.lau@ibm.com> Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
115 lines
3.9 KiB
YAML
115 lines
3.9 KiB
YAML
name: Stress Test (rebase tested branch on main for cache reuse)
|
|
|
|
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.15'
|
|
XCODE_VERSION: '16.4'
|
|
CLANG_VERSION: '19'
|
|
RUSTC_VERSION: '1.88'
|
|
|
|
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++' }}
|
|
# Enable sccache - this is okay for a manually-dispatched workflow that is typically used to
|
|
# test lib-only or test-only deflaking changes. This should be able to pick up cache from
|
|
# test-linux.yml and test-macos.yml running on the main branch.
|
|
SCCACHE_GHA_ENABLED: 'true'
|
|
SCCACHE_IDLE_TIMEOUT: '0'
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
path: node
|
|
- name: Install Clang ${{ env.CLANG_VERSION }}
|
|
if: runner.os == 'Linux'
|
|
uses: $/.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@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.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@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11
|
|
with:
|
|
version: v0.17.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"
|