mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
135 lines
4.4 KiB
YAML
135 lines
4.4 KiB
YAML
#
|
|
# Dedicated Python integration tests workflow, called from the manual integration test orchestrator.
|
|
# Runs all tests (unit + integration).
|
|
#
|
|
|
|
name: python-integration-tests
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
checkout-ref:
|
|
description: "Git ref to checkout (e.g., refs/pull/123/head)"
|
|
required: true
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
|
|
env:
|
|
UV_CACHE_DIR: /tmp/.uv-cache
|
|
RUN_INTEGRATION_TESTS: "true"
|
|
|
|
jobs:
|
|
python-tests-core:
|
|
name: Python Integration Tests - Core
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
timeout-minutes: 60
|
|
env:
|
|
UV_PYTHON: "3.10"
|
|
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
|
|
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
|
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
ANTHROPIC_CHAT_MODEL_ID: ${{ vars.ANTHROPIC_CHAT_MODEL_ID }}
|
|
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
LOCAL_MCP_URL: ${{ vars.LOCAL_MCP__URL }}
|
|
FUNCTIONS_WORKER_RUNTIME: "python"
|
|
DURABLE_TASK_SCHEDULER_CONNECTION_STRING: "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None"
|
|
AzureWebJobsStorage: "UseDevelopmentStorage=true"
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
ref: ${{ inputs.checkout-ref }}
|
|
persist-credentials: false
|
|
|
|
- name: Set up python and install the project
|
|
id: python-setup
|
|
uses: ./.github/actions/python-setup
|
|
with:
|
|
python-version: "3.10"
|
|
os: ${{ runner.os }}
|
|
env:
|
|
UV_CACHE_DIR: /tmp/.uv-cache
|
|
|
|
- name: Azure CLI Login
|
|
uses: azure/login@v2
|
|
with:
|
|
client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
|
|
- name: Set up Azure Functions Integration Test Emulators
|
|
uses: ./.github/actions/azure-functions-integration-setup
|
|
id: azure-functions-setup
|
|
|
|
- name: Test with pytest
|
|
run: uv run poe all-tests -n logical --dist loadfile --dist worksteal --timeout=120 --session-timeout=900 --timeout_method thread --retries 2 --retry-delay 5
|
|
|
|
python-tests-azure-ai:
|
|
name: Python Integration Tests - Azure AI
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
timeout-minutes: 60
|
|
env:
|
|
UV_PYTHON: "3.10"
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ secrets.AZUREAI__ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREAI__DEPLOYMENTNAME }}
|
|
LOCAL_MCP_URL: ${{ vars.LOCAL_MCP__URL }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
ref: ${{ inputs.checkout-ref }}
|
|
persist-credentials: false
|
|
|
|
- name: Set up python and install the project
|
|
id: python-setup
|
|
uses: ./.github/actions/python-setup
|
|
with:
|
|
python-version: "3.10"
|
|
os: ${{ runner.os }}
|
|
env:
|
|
UV_CACHE_DIR: /tmp/.uv-cache
|
|
|
|
- name: Azure CLI Login
|
|
uses: azure/login@v2
|
|
with:
|
|
client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
|
|
- name: Test with pytest
|
|
timeout-minutes: 15
|
|
run: uv run --directory packages/azure-ai poe integration-tests -n logical --dist loadfile --dist worksteal --timeout=120 --session-timeout=900 --timeout_method thread --retries 2 --retry-delay 5
|
|
|
|
python-integration-tests-check:
|
|
if: always()
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
[
|
|
python-tests-core,
|
|
python-tests-azure-ai
|
|
]
|
|
steps:
|
|
- name: Fail workflow if tests failed
|
|
if: contains(join(needs.*.result, ','), 'failure')
|
|
uses: actions/github-script@v8
|
|
with:
|
|
script: core.setFailed('Integration Tests Failed!')
|
|
|
|
- name: Fail workflow if tests cancelled
|
|
if: contains(join(needs.*.result, ','), 'cancelled')
|
|
uses: actions/github-script@v8
|
|
with:
|
|
script: core.setFailed('Integration Tests Cancelled!')
|