Skip to content

Nightly Provider Smoke #44

Nightly Provider Smoke

Nightly Provider Smoke #44

Workflow file for this run

name: Nightly Provider Smoke
on:
schedule:
- cron: '0 6 * * *' # daily 06:00 UTC
workflow_dispatch: # manual trigger
permissions:
contents: read
jobs:
smoke:
strategy:
matrix:
provider:
- claude
- gpt
- gemini
- openrouter
- opencodezen-go
- workers-ai
- aigateway
fail-fast: false # one provider failure shouldn't cancel others
runs-on: ubuntu-latest
timeout-minutes: 15
env:
TEAAGENT_ACCEPT_HOSTED_SMOKE: 1
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY || '' }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY || '' }}
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY || '' }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY || '' }}
OPENCODEZEN_API_KEY: ${{ secrets.OPENCODEZEN_API_KEY || '' }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN || '' }}
WORKERS_AI_BASE_URL: ${{ secrets.WORKERS_AI_BASE_URL || '' }}
AIGATEWAY_BASE_URL: ${{ secrets.AIGATEWAY_BASE_URL || '' }}
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0 # needed for benchmark regression comparison
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: Smoke — ${{ matrix.provider }}
id: smoke
continue-on-error: true
run: |
teaagent model smoke "${{ matrix.provider }}" 2>&1
- name: Conformance — ${{ matrix.provider }}
id: conformance
continue-on-error: true
run: |
teaagent model conformance --provider "${{ matrix.provider }}" 2>&1
- name: Summary
if: always()
run: |
echo "## ${{ matrix.provider }}" >> $GITHUB_STEP_SUMMARY
echo "- smoke: **${{ steps.smoke.outcome }}**" >> $GITHUB_STEP_SUMMARY
echo "- conformance: **${{ steps.conformance.outcome }}**" >> $GITHUB_STEP_SUMMARY
full-test-suite:
name: Full test suite + coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: Run full test suite
run: python -m pytest --timeout=120 -q 2>&1 | tail -20
- name: Coverage report
run: |
python -m pytest --cov=teaagent --cov-report=term --cov-report=html:htmlcov -q 2>&1 | tail -5
- name: Upload coverage report
uses: actions/upload-artifact@v7
with:
name: htmlcov
path: htmlcov/
lint-and-qa:
name: Lint + typecheck + quality audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: ruff lint
run: ruff check teaagent/ tests/
- name: ruff format
run: ruff format --check teaagent/ tests/
- name: mypy
run: mypy teaagent/ tests/
- name: Test quality audit
run: python3 scripts/audit_test_quality.py --format markdown --output /tmp/test-quality-report.md
- name: Upload quality report
uses: actions/upload-artifact@v7
with:
name: test-quality-report
path: /tmp/test-quality-report.md
report:
if: always()
needs: [smoke, full-test-suite, lint-and-qa]
runs-on: ubuntu-latest
steps:
- name: Aggregate results
run: |
echo "# Nightly Results" >> $GITHUB_STEP_SUMMARY
echo "See per-provider and per-job results above." >> $GITHUB_STEP_SUMMARY