fix: absolute paths #444
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: Package Manager Benchmarks | |
on: | |
push: | |
workflow_dispatch: | |
inputs: | |
fixtures: | |
description: 'The fixture to run the benchmarks on' | |
default: '["next", "astro", "svelte", "vue"]' | |
variations: | |
description: 'The benchmark variations to run' | |
default: '["cache", "cache+lockfile", "cache+node_modules", "cache+lockfile+node_modules", "clean", "lockfile", "lockfile+node_modules", "node_modules"]' | |
binaries: | |
description: 'The binaries to run the benchmarks on' | |
default: '"npm,yarn,berry,pnpm,vlt,bun,deno,nx,turbo,node"' | |
warmup: | |
description: 'The number of warmup runs on each benchmark' | |
default: '2' | |
runs: | |
description: 'The number of runs on each benchmark' | |
default: '10' | |
schedule: | |
- cron: "5 23 * * *" | |
# Prevent multiple runs from interfering with each other | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
benchmark: | |
name: 'Run Benchmarks' | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
fixture: ${{ fromJson(inputs.fixtures || '["next", "astro", "vue", "svelte"]') }} | |
variation: ${{ fromJson(inputs.variations || '["cache", "cache+lockfile", "cache+node_modules", "cache+lockfile+node_modules", "clean", "lockfile", "lockfile+node_modules", "node_modules"]') }} | |
include: | |
- variation: "run" | |
fixture: "run" | |
env: | |
BENCH_INCLUDE: ${{ fromJson(inputs.binaries || '"npm,yarn,berry,pnpm,vlt,bun,deno,nx,turbo,node"') }} | |
BENCH_WARMUP: ${{ inputs.warmup || '2' }} | |
BENCH_RUNS: ${{ inputs.runs || '10' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '24' | |
- name: Install & Setup Tools | |
run: | | |
bash ./scripts/setup.sh | |
- name: Run Benchmarks variations | |
run: | | |
if [ "${{ matrix.variation }}" = "run" ]; then | |
bash ./scripts/benchmark.sh run run | |
else | |
bash ./scripts/benchmark.sh ${{ matrix.fixture }} ${{ matrix.variation }} | |
fi | |
- name: Upload Benchmark Results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: results-${{ matrix.fixture }}-${{ matrix.variation }} | |
path: ./results/${{ matrix.fixture }}/${{ matrix.variation }}/ | |
retention-days: 7 | |
process: | |
name: 'Process Results' | |
runs-on: ubuntu-latest | |
needs: [benchmark] | |
timeout-minutes: 5 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '24' | |
- name: Download Results | |
uses: actions/download-artifact@v4 | |
with: | |
path: results | |
pattern: results-* | |
- name: Process Results | |
run: | | |
bash ./scripts/process-results.sh | |
- name: Build Charts View | |
run: | | |
cd app && vlt install && vlr build | |
- name: Upload Processed Results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: results | |
path: results/ | |
retention-days: 7 | |
deploy: | |
name: 'Deploy Results' | |
runs-on: ubuntu-latest | |
needs: [process] | |
permissions: | |
contents: write | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download Results | |
uses: actions/download-artifact@v4 | |
with: | |
name: results | |
path: results/ | |
- name: Deploy to GitHub Pages | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: results | |
keep_files: true | |