pi-ai-provider-e2e.yml 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. jobs:
  20. e2e:
  21. runs-on: ubuntu-latest
  22. name: Azure OpenAI Responses + Anthropic Messages
  23. timeout-minutes: 20
  24. steps:
  25. - uses: actions/checkout@v6
  26. - uses: pnpm/action-setup@v4
  27. - uses: actions/setup-node@v6
  28. with:
  29. node-version: 24
  30. cache: pnpm
  31. - name: Install (immutable)
  32. run: pnpm install --frozen-lockfile
  33. # The tests self-skip locally when a credential is absent. A manually
  34. # dispatched CI run must fail instead of reporting an all-skipped green.
  35. - name: Preflight (require provider API keys)
  36. env:
  37. AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY_EXTERNAL }}
  38. ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY_EXTERNAL }}
  39. run: |
  40. set -euo pipefail
  41. missing=0
  42. for name in AZURE_OPENAI_API_KEY ANTHROPIC_API_KEY; do
  43. if [ -z "${!name:-}" ]; then
  44. echo "::error::${name} is empty. Configure the corresponding *_EXTERNAL repository secret."
  45. missing=1
  46. fi
  47. done
  48. exit "$missing"
  49. - name: E2E tests (real Azure OpenAI and Anthropic APIs)
  50. env:
  51. AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY_EXTERNAL }}
  52. ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY_EXTERNAL }}
  53. DSH_PI_AI_OPENAI_MODEL: ${{ inputs.azure_openai_model }}
  54. DSH_PI_AI_OPENAI_BASE_URL: https://openai-routerhub-resource.services.ai.azure.com/api/projects/openai/openai/v1
  55. DSH_PI_AI_ANTHROPIC_MODEL: ${{ inputs.anthropic_model }}
  56. DSH_E2E_MAX_WORKERS: 2
  57. run: >-
  58. pnpm exec vitest run --config vitest.e2e.config.ts
  59. packages/llm/llm-pi-ai/tests/provider-apis.e2e.ts