Files
Kazuki Yamada 042750cb4e chore(ci): Replace npm run with node --run in workflows
Now that the minimum supported Node.js version is 22, `node --run` is
available everywhere. It avoids the npm process-spawn overhead and
matches the style already used in package.json scripts.

Affects all GitHub Actions workflows that invoke npm scripts and the
website/server Dockerfile bundle step. `npm ci` is left as-is since it
is npm-specific.
2026-05-09 19:08:10 +09:00

130 lines
3.7 KiB
YAML

name: Memory Benchmark
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
inputs:
iterations:
description: 'Number of test iterations (default: 50)'
required: false
default: '50'
delay:
description: 'Delay between iterations in ms (default: 50)'
required: false
default: '50'
permissions:
contents: read
jobs:
memory-test:
name: Memory Test
runs-on: ubuntu-latest
timeout-minutes: 15
defaults:
run:
working-directory: scripts/memory
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version-file: .tool-versions
cache: npm
cache-dependency-path: |
package-lock.json
scripts/memory/package-lock.json
# Install root dependencies (for repomix)
- name: Install root dependencies
working-directory: .
run: npm ci
# Build repomix
- name: Build repomix
working-directory: .
run: node --run build
# Install benchmark dependencies
- name: Install benchmark dependencies
run: npm ci
# Build benchmark
- name: Build benchmark
run: node --run build
# Run memory test
- name: Run memory test
run: node --expose-gc dist/memory-test.js "$ITERATIONS" "$DELAY"
env:
CI: true
ITERATIONS: ${{ github.event.inputs.iterations || '50' }}
DELAY: ${{ github.event.inputs.delay || '50' }}
# Upload memory test results if available
- name: Upload memory test results
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
if: always()
with:
name: memory-test-results-${{ github.run_id }}
path: scripts/memory/memory-test-results-*.json
retention-days: 30
memory-test-full:
name: Memory Test (Full Analysis)
runs-on: ubuntu-latest
timeout-minutes: 30
# Only run full analysis on manual dispatch
if: github.event_name == 'workflow_dispatch'
defaults:
run:
working-directory: scripts/memory
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version-file: .tool-versions
cache: npm
cache-dependency-path: |
package-lock.json
scripts/memory/package-lock.json
# Install root dependencies (for repomix)
- name: Install root dependencies
working-directory: .
run: npm ci
# Build repomix
- name: Build repomix
working-directory: .
run: node --run build
# Install benchmark dependencies
- name: Install benchmark dependencies
run: npm ci
# Build benchmark
- name: Build benchmark
run: node --run build
# Run comprehensive memory test
- name: Run comprehensive memory test
run: node --expose-gc dist/memory-test.js --full --save
env:
CI: true
# Upload detailed memory test results
- name: Upload detailed memory test results
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
if: always()
with:
name: memory-test-results-full-${{ github.run_id }}
path: scripts/memory/memory-test-results-*.json
retention-days: 90