Skip to content

wip ami prebuild action #15466

wip ami prebuild action

wip ami prebuild action #15466

Workflow file for this run

# Runs once when we add the `benchmark` tag to a pull request.
name: PR Benchmarks
concurrency:
# The group causes runs to queue instead of running in parallel.
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
# Don't cancel benchmarks that are already running, instead just queue them up.
cancel-in-progress: false
on:
pull_request:
types: [labeled, synchronize]
branches: ["develop"]
workflow_dispatch: { }
permissions:
actions: write # for removing labels
contents: read
pull-requests: write # for commenting on PRs
id-token: write # enables AWS-GitHub OIDC
deployments: write # for Polar Signals profiling
jobs:
label_trigger:
runs-on: ubuntu-latest
timeout-minutes: 120
if: ${{ contains(github.event.head_commit.message, '[benchmark]') || github.event.label.name == 'benchmark' && github.event_name == 'pull_request' }}
steps:
# We remove the benchmark label first so that the workflow can be re-triggered.
- uses: actions-ecosystem/action-remove-labels@v1
with:
labels: benchmark
bench:
needs: label_trigger
timeout-minutes: 120
runs-on:
- runs-on=${{ github.run_id }}
- family=c6id.8xlarge
- image=ubuntu24-full-x64
- spot=false
- ${{ github.event.pull_request.head.repo.fork == false && 'extras=s3-cache' || '' }}
- tag=${{ matrix.benchmark.id }}
strategy:
matrix:
benchmark:
- id: random_access
name: Random Access
- id: compress
name: Compression
if: ${{ contains(github.event.head_commit.message, '[benchmark]') || github.event.label.name == 'benchmark' && github.event_name == 'pull_request' }}
steps:
- uses: runs-on/action@v2
if: github.event.pull_request.head.repo.fork == false
with:
sccache: s3
- uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: ./.github/actions/setup-rust
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install DuckDB
run: |
wget -qO- https://github.com/duckdb/duckdb/releases/download/v1.4.2/duckdb_cli-linux-amd64.zip | funzip > duckdb
chmod +x duckdb
echo "$PWD" >> $GITHUB_PATH
- name: Build binary
shell: bash
env:
RUSTFLAGS: "-C target-cpu=native -C force-frame-pointers=yes"
run: |
cargo build --bin ${{ matrix.benchmark.id }} --package bench-vortex --profile release_debug
- name: Setup Polar Signals
if: github.event.pull_request.head.repo.fork == false
uses: polarsignals/[email protected]
with:
polarsignals_cloud_token: ${{ secrets.POLAR_SIGNALS_API_KEY }}
labels: "branch=${{ github.ref_name }};gh_run_id=${{ github.run_id }};benchmark=${{ matrix.benchmark.id }}"
parca_agent_version: "0.42.0"
project_uuid: "e5d846e1-b54c-46e7-9174-8bf055a3af56"
extra_args: "--off-cpu-threshold=0.001" # Personally tuned by @brancz
- name: Run ${{ matrix.benchmark.name }} benchmark
shell: bash
env:
RUST_BACKTRACE: full
run: |
target/release_debug/${{ matrix.benchmark.id }} -d gh-json -o ${{ matrix.benchmark.id }}.json
- name: Setup AWS CLI
if: github.event.pull_request.head.repo.fork == false
uses: aws-actions/configure-aws-credentials@v5
with:
role-to-assume: arn:aws:iam::375504701696:role/GitHubBenchmarkRole
aws-region: us-east-1
- name: Install uv
uses: spiraldb/actions/.github/actions/[email protected]
with:
sync: false
- name: Compare results
shell: bash
run: |
set -Eeu -o pipefail -x
base_commit_sha=$(\
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
https://api.github.com/repos/vortex-data/vortex/actions/workflows/bench.yml/runs\?branch\=develop\&status\=success\&per_page\=1 \
| jq -r '.workflow_runs[].head_sha' \
)
aws s3 cp s3://vortex-benchmark-results-database/data.json.gz - --no-sign-request \
| gzip -d \
| grep $base_commit_sha \
> base.json
echo '# Benchmarks: ${{ matrix.benchmark.name }}' > comment.md
echo '' >> comment.md
uv run --no-project scripts/compare-benchmark-jsons.py base.json ${{ matrix.benchmark.id }}.json "${{ matrix.benchmark.name }}" \
>> comment.md
- name: Comment PR
uses: thollander/actions-comment-pull-request@v3
with:
file-path: comment.md
comment-tag: bench-pr-comment-${{ matrix.benchmark.id }}
sql:
needs: label_trigger
uses: ./.github/workflows/sql-benchmarks.yml
secrets: inherit
with:
mode: "pr"