pi-ai-provider-e2e.yml 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. name: E2E (pi-ai Azure OpenAI and Anthropic)
  2. # This suite spends tokens against two external providers and is intentionally
  3. # opt-in. It has no push, pull_request, schedule, or workflow_call trigger.
  4. on:
  5. workflow_dispatch:
  6. inputs:
  7. azure_openai_model:
  8. description: Azure OpenAI model from pi-ai's installed catalog
  9. required: true
  10. default: gpt-5.5
  11. type: string
  12. anthropic_model:
  13. description: Anthropic model from pi-ai's installed catalog
  14. required: true
  15. default: claude-opus-4-8
  16. type: string
  17. permissions:
  18. contents: read
  19. env:
  20. # CI runs must never report to the production telemetry endpoint baked
  21. # into apps/cli/cordis.yml (AppCLIEntry disables the row when set).
  22. DSH_TELEMETRY_DISABLED: '1'
  23. jobs:
  24. e2e:
  25. runs-on: ubuntu-latest
  26. name: Azure OpenAI Responses + Anthropic Messages
  27. timeout-minutes: 20
  28. steps:
  29. - uses: actions/checkout@v6
  30. - uses: pnpm/action-setup@v4
  31. - uses: actions/setup-node@v6
  32. with:
  33. node-version: 24
  34. cache: pnpm
  35. - name: Install (immutable)
  36. run: pnpm install --frozen-lockfile
  37. # The tests self-skip locally when a credential is absent. A manually
  38. # dispatched CI run must fail instead of reporting an all-skipped green.
  39. - name: Preflight (require provider API keys)
  40. env:
  41. AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY_EXTERNAL }}
  42. ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY_EXTERNAL }}
  43. run: |
  44. set -euo pipefail
  45. missing=0
  46. for name in AZURE_OPENAI_API_KEY ANTHROPIC_API_KEY; do
  47. if [ -z "${!name:-}" ]; then
  48. echo "::error::${name} is empty. Configure the corresponding *_EXTERNAL repository secret."
  49. missing=1
  50. fi
  51. done
  52. exit "$missing"
  53. - name: E2E tests (real Azure OpenAI and Anthropic APIs)
  54. env:
  55. AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY_EXTERNAL }}
  56. ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY_EXTERNAL }}
  57. DSH_PI_AI_OPENAI_MODEL: ${{ inputs.azure_openai_model }}
  58. DSH_PI_AI_OPENAI_BASE_URL: https://openai-routerhub-resource.services.ai.azure.com/api/projects/openai/openai/v1
  59. DSH_PI_AI_ANTHROPIC_MODEL: ${{ inputs.anthropic_model }}
  60. DSH_E2E_MAX_WORKERS: 2
  61. run: >-
  62. pnpm exec vitest run --config vitest.e2e.config.ts
  63. packages/llm/llm-pi-ai/tests/provider-apis.e2e.ts