Skip to content

Nightly Benchmarks #102

Nightly Benchmarks

Nightly Benchmarks #102

Workflow file for this run

name: Nightly Benchmarks
on:
schedule:
- cron: '0 13 * * *' # 6 AM PDT
workflow_dispatch:
permissions:
contents: write
id-token: write
concurrency:
group: nightly-bench
cancel-in-progress: false
jobs:
gcp:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout trunk
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: trunk
path: alyze
- name: Checkout gh-pages
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: gh-pages
path: gh-pages
- uses: google-github-actions/auth@v2
with:
workload_identity_provider: ${{ vars.WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ vars.GCP_SERVICE_ACCOUNT }}
- uses: google-github-actions/setup-gcloud@v2
- name: Run GCP benchmarks
run: |
chmod +x gh-pages/benches/*.sh
NAPKIN_GCP_ZONE=us-east1-b REPO_DIR=$GITHUB_WORKSPACE/alyze \
bash gh-pages/benches/bench-fleet-ci.sh
- uses: actions/upload-artifact@v4
with:
name: gcp-results
path: alyze/data/results.csv
aws:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout trunk
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: trunk
path: alyze
- name: Checkout gh-pages
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: gh-pages
path: gh-pages
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
aws-region: us-east-2
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.AWS_SSH_KEY }}" > ~/.ssh/alyze-bench.pem
chmod 600 ~/.ssh/alyze-bench.pem
- name: Run AWS benchmarks
run: |
chmod +x gh-pages/benches/*.sh
REPO_DIR=$GITHUB_WORKSPACE/alyze \
bash gh-pages/benches/bench-fleet-aws-ci.sh
- uses: actions/upload-artifact@v4
with:
name: aws-results
path: alyze/data/results.csv
azure:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout trunk
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: trunk
path: alyze
- name: Checkout gh-pages
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: gh-pages
path: gh-pages
- uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Run Azure benchmarks
run: |
chmod +x gh-pages/benches/*.sh
REPO_DIR=$GITHUB_WORKSPACE/alyze \
bash gh-pages/benches/bench-fleet-azure-ci.sh
- uses: actions/upload-artifact@v4
with:
name: azure-results
path: alyze/data/results.csv
publish:
needs: [gcp, aws, azure]
runs-on: ubuntu-latest
steps:
- name: Checkout gh-pages
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: gh-pages
- uses: actions/download-artifact@v4
with:
path: artifacts
- name: Publish results
run: |
TODAY=$(date -u +%Y-%m-%d)
mkdir -p data
# Merge GCP and AWS results (skip headers).
# Start fresh so re-running on the same day overwrites, not appends.
rm -f "data/${TODAY}.csv"
for f in artifacts/*/results.csv; do
tail -n +2 "$f" >> "data/${TODAY}.csv"
done
# Stamp every row of this day with one timestamp so the chart shows a
# single point per date (GCP and AWS otherwise finish seconds apart).
awk -F, -v OFS=, -v ts="${TODAY}T00:00:00Z" '{$4=ts; print}' \
"data/${TODAY}.csv" > "data/${TODAY}.csv.tmp" && mv "data/${TODAY}.csv.tmp" "data/${TODAY}.csv"
# Rebuild combined CSV
echo "benchmark,machine,throughput_mibs,timestamp,commit" > data/data.csv
for f in data/2*.csv; do
cat "$f" >> data/data.csv
done
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add data/
git diff --cached --quiet && echo "No changes to commit" && exit 0
git commit -m "bench: ${TODAY} results"
git push