Skip to content

Benchmark

Benchmark #10

Workflow file for this run

name: Benchmark
on:
schedule:
- cron: '0 0 * * *' # Daily at midnight UTC
workflow_dispatch:
inputs:
iterations:
description: 'Iterations per provider'
required: false
default: '10'
concurrency:
group: benchmarks
cancel-in-progress: true
permissions:
contents: write
jobs:
bench:
name: Run Benchmarks
runs-on: namespace-profile-default
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: 'npm'
- run: npm ci
- name: Run benchmarks
env:
COMPUTESDK_API_KEY: ${{ secrets.COMPUTESDK_API_KEY }}
E2B_API_KEY: ${{ secrets.E2B_API_KEY }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_TEAM_ID: ${{ secrets.VERCEL_TEAM_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
BL_API_KEY: ${{ secrets.BL_API_KEY }}
BL_WORKSPACE: ${{ secrets.BL_WORKSPACE }}
MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }}
MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }}
DAYTONA_API_KEY: ${{ secrets.DAYTONA_API_KEY }}
RAILWAY_API_KEY: ${{ secrets.RAILWAY_API_KEY }}
RAILWAY_PROJECT_ID: ${{ secrets.RAILWAY_PROJECT_ID }}
RAILWAY_ENVIRONMENT_ID: ${{ secrets.RAILWAY_ENVIRONMENT_ID }}
NSC_TOKEN: ${{ secrets.NSC_TOKEN }}
RENDER_API_KEY: ${{ secrets.RENDER_API_KEY }}
RENDER_OWNER_ID: ${{ secrets.RENDER_OWNER_ID }}
run: npm run bench -- --iterations ${{ github.event.inputs.iterations || '10' }}
- run: npm run generate-svg
- name: Commit and push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add results.svg results/
git diff --cached --quiet && echo "No changes to commit" && exit 0
git commit -m "chore: update benchmark results [skip ci]"
git push