Skip to content

Run Evals

Run Evals #5

Workflow file for this run

name: Run Evals
on:
workflow_dispatch:
inputs:
suite_filter:
description: "Glob pattern for eval files to run"
required: false
default: "evals/**/eval.yaml"
threshold:
description: "Minimum score threshold (0-1)"
required: false
default: "0.8"
jobs:
evals:
name: Run AgentV Evals
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-bun
- name: Build
run: bun run build
- name: Install GitHub Copilot CLI
run: curl -fsSL https://gh.io/copilot-install | bash
- name: Configure credentials
run: |
cat > .env <<EOF
GH_MODELS_TOKEN=${{ secrets.GITHUB_TOKEN }}
GH_MODELS_MODEL=${{ vars.GH_MODELS_MODEL || 'gpt-5-mini' }}
COPILOT_MODEL=${{ vars.COPILOT_MODEL || 'gpt-5-mini' }}
EOF
- name: Resolve filter and threshold
id: filter
run: |
echo "pattern=${{ github.event.inputs.suite_filter || 'evals/**/eval.yaml' }}" >> "$GITHUB_OUTPUT"
echo "threshold=${{ github.event.inputs.threshold || '0.8' }}" >> "$GITHUB_OUTPUT"
- name: Run AgentV evals
id: run-evals
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_PAT }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir -p .agentv/ci-results
bunx agentv eval run "${{ steps.filter.outputs.pattern }}" \
--workers 1 \
--threshold ${{ steps.filter.outputs.threshold }} \
-o .agentv/ci-results/junit.xml \
--benchmark-json .agentv/ci-results/benchmark.json \
--artifacts .agentv/ci-results/artifacts \
--verbose \
2>&1 | tee .agentv/ci-results/eval-output.log
echo "exit_code=${PIPESTATUS[0]}" >> "$GITHUB_OUTPUT"
- name: Publish JUnit test results
if: always()
uses: dorny/test-reporter@v1
with:
name: AgentV Eval Results
path: .agentv/ci-results/junit.xml
reporter: java-junit
fail-on-error: false
- name: Upload eval artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: eval-results-${{ github.run_id }}
path: .agentv/ci-results/
retention-days: 30
- name: Fail if threshold not met
if: always()
run: |
if [ "${{ steps.run-evals.outputs.exit_code }}" != "0" ]; then
echo "::error::Eval score below threshold (${{ steps.filter.outputs.threshold }})"
exit 1
fi