BangSo/.github/workflows/nightly-verification.yml

78 lines
2.2 KiB
YAML

name: nightly verification
on:
schedule:
- cron: "23 2 * * *"
workflow_dispatch:
inputs:
run_live_providers:
description: Run secret-gated OpenRouter, E2B, and Box canaries
required: false
type: boolean
default: false
permissions:
contents: read
concurrency:
group: nightly-verification
cancel-in-progress: false
jobs:
visual-web:
name: Daily web screenshots
uses: ./.github/workflows/playwright.yml
with:
publish_report: true
secrets:
S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }}
S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }}
topology:
name: Production topology smoke
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm test:topology
live-providers:
name: Live provider canaries
runs-on: ubuntu-latest
timeout-minutes: 30
env:
E2B_API_KEY: ${{ secrets.E2B_API_KEY }}
BOX_API_KEY: ${{ secrets.BOX_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
RUN_LIVE_PROVIDERS: ${{ github.event_name == 'schedule' || inputs.run_live_providers }}
steps:
- name: Check secret-gated canaries
id: gate
shell: bash
run: |
if [[ "$RUN_LIVE_PROVIDERS" == "true" && ( -n "$E2B_API_KEY" || -n "$BOX_API_KEY" || -n "$OPENROUTER_API_KEY" ) ]]; then
echo "enabled=true" >> "$GITHUB_OUTPUT"
else
echo "No requested live canary has a configured key; skipping safely."
echo "enabled=false" >> "$GITHUB_OUTPUT"
fi
- if: steps.gate.outputs.enabled == 'true'
uses: actions/checkout@v5
- if: steps.gate.outputs.enabled == 'true'
uses: pnpm/action-setup@v4
- if: steps.gate.outputs.enabled == 'true'
uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- if: steps.gate.outputs.enabled == 'true'
run: pnpm install --frozen-lockfile
- if: steps.gate.outputs.enabled == 'true'
run: pnpm test:canary