name: Python - Sample Validation on: workflow_dispatch: schedule: - cron: "0 0 * * *" # Run at midnight UTC daily env: # Configure a constant location for the uv cache UV_CACHE_DIR: /tmp/.uv-cache # GitHub Copilot configuration GITHUB_COPILOT_MODEL: claude-opus-4.6 COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }} permissions: contents: read id-token: write jobs: validate-01-get-started: name: Validate 01-get-started runs-on: ubuntu-latest environment: integration env: # Required configuration for get-started samples FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT || vars.AZURE_AI_PROJECT_ENDPOINT }} FOUNDRY_MODEL: ${{ vars.FOUNDRY_MODEL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "FOUNDRY_PROJECT_ENDPOINT=$FOUNDRY_PROJECT_ENDPOINT" >> .env echo "FOUNDRY_MODEL=$FOUNDRY_MODEL" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 01-get-started --save-report --report-name 01-get-started - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-01-get-started path: python/samples/sample_validation/reports/ validate-02-agents: name: Validate 02-agents runs-on: ubuntu-latest environment: integration env: # Foundry configuration FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT || vars.AZURE_AI_PROJECT_ENDPOINT }} FOUNDRY_MODEL: ${{ vars.FOUNDRY_MODEL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} # Azure OpenAI configuration AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }} AZURE_OPENAI_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_DEPLOYMENT_NAME || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME || vars.AZUREOPENAI__EMBEDDINGDEPLOYMENTNAME }} # OpenAI configuration OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }} OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }} OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }} # GitHub MCP GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} OPENAI_MODEL: ${{ vars.OPENAI__RESPONSESMODELID }} # Observability ENABLE_INSTRUMENTATION: "true" defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "FOUNDRY_PROJECT_ENDPOINT=$FOUNDRY_PROJECT_ENDPOINT" >> .env echo "FOUNDRY_MODEL=$FOUNDRY_MODEL" >> .env echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env echo "AZURE_OPENAI_DEPLOYMENT_NAME=$AZURE_OPENAI_DEPLOYMENT_NAME" >> .env echo "AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=$AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME" >> .env echo "OPENAI_API_KEY=$OPENAI_API_KEY" >> .env echo "OPENAI_CHAT_MODEL_ID=$OPENAI_CHAT_MODEL_ID" >> .env echo "OPENAI_RESPONSES_MODEL_ID=$OPENAI_RESPONSES_MODEL_ID" >> .env echo "GITHUB_PAT=$GITHUB_PAT" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents --exclude providers --save-report --report-name 02-agents - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents path: python/samples/sample_validation/reports/ validate-02-agents-openai: name: Validate 02-agents/providers/openai runs-on: ubuntu-latest environment: integration env: OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }} OPENAI_MODEL: ${{ vars.OPENAI__CHATMODELID }} OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }} OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "OPENAI_API_KEY=$OPENAI_API_KEY" >> .env echo "OPENAI_MODEL=$OPENAI_MODEL" >> .env echo "OPENAI_CHAT_MODEL_ID=$OPENAI_CHAT_MODEL_ID" >> .env echo "OPENAI_RESPONSES_MODEL_ID=$OPENAI_RESPONSES_MODEL_ID" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/openai --save-report --report-name 02-agents-openai - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-openai path: python/samples/sample_validation/reports/ validate-02-agents-azure: name: Validate 02-agents/providers/azure runs-on: ubuntu-latest environment: integration env: AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }} AZURE_OPENAI_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_DEPLOYMENT_NAME || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} AZURE_OPENAI_API_VERSION: ${{ vars.AZURE_OPENAI_API_VERSION || '' }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env echo "AZURE_OPENAI_DEPLOYMENT_NAME=$AZURE_OPENAI_DEPLOYMENT_NAME" >> .env echo "AZURE_OPENAI_API_VERSION=$AZURE_OPENAI_API_VERSION" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/azure --save-report --report-name 02-agents-azure - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-azure path: python/samples/sample_validation/reports/ validate-02-agents-anthropic: name: Validate 02-agents/providers/anthropic runs-on: ubuntu-latest environment: integration env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} ANTHROPIC_CHAT_MODEL_ID: ${{ vars.ANTHROPIC_CHAT_MODEL_ID }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY" >> .env echo "ANTHROPIC_CHAT_MODEL_ID=$ANTHROPIC_CHAT_MODEL_ID" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/anthropic --save-report --report-name 02-agents-anthropic - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-anthropic path: python/samples/sample_validation/reports/ validate-02-agents-github-copilot: name: Validate 02-agents/providers/github_copilot runs-on: ubuntu-latest environment: integration defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/github_copilot --save-report --report-name 02-agents-github-copilot - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-github-copilot path: python/samples/sample_validation/reports/ validate-02-agents-amazon: name: Validate 02-agents/providers/amazon if: false # Temporarily disabled - requires AWS credentials runs-on: ubuntu-latest environment: integration env: BEDROCK_CHAT_MODEL_ID: ${{ vars.BEDROCK__CHATMODELID }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/amazon --save-report --report-name 02-agents-amazon - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-amazon path: python/samples/sample_validation/reports/ validate-02-agents-ollama: name: Validate 02-agents/providers/ollama if: false # Temporarily disabled - requires local Ollama server runs-on: ubuntu-latest environment: integration env: OLLAMA_MODEL: ${{ vars.OLLAMA__MODEL }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/ollama --save-report --report-name 02-agents-ollama - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-ollama path: python/samples/sample_validation/reports/ validate-02-agents-foundry: name: Validate 02-agents/providers/foundry if: false # Temporarily disabled - provider folder also contains the local Foundry sample runs-on: ubuntu-latest environment: integration env: FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT || vars.AZURE_AI_PROJECT_ENDPOINT }} FOUNDRY_MODEL: ${{ vars.FOUNDRY_MODEL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} FOUNDRY_AGENT_NAME: ${{ vars.FOUNDRY_AGENT_NAME || '' }} FOUNDRY_AGENT_VERSION: ${{ vars.FOUNDRY_AGENT_VERSION || '' }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "FOUNDRY_PROJECT_ENDPOINT=$FOUNDRY_PROJECT_ENDPOINT" >> .env echo "FOUNDRY_MODEL=$FOUNDRY_MODEL" >> .env echo "FOUNDRY_AGENT_NAME=$FOUNDRY_AGENT_NAME" >> .env echo "FOUNDRY_AGENT_VERSION=$FOUNDRY_AGENT_VERSION" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/foundry --save-report --report-name 02-agents-foundry - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-foundry path: python/samples/sample_validation/reports/ validate-02-agents-copilotstudio: name: Validate 02-agents/providers/copilotstudio if: false # Temporarily disabled - requires Copilot Studio setup runs-on: ubuntu-latest environment: integration env: COPILOTSTUDIOAGENT__ENVIRONMENTID: ${{ secrets.COPILOTSTUDIOAGENT__ENVIRONMENTID }} COPILOTSTUDIOAGENT__SCHEMANAME: ${{ secrets.COPILOTSTUDIOAGENT__SCHEMANAME }} COPILOTSTUDIOAGENT__TENANTID: ${{ secrets.COPILOTSTUDIOAGENT__TENANTID }} COPILOTSTUDIOAGENT__AGENTAPPID: ${{ secrets.COPILOTSTUDIOAGENT__AGENTAPPID }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "COPILOTSTUDIOAGENT__ENVIRONMENTID=$COPILOTSTUDIOAGENT__ENVIRONMENTID" >> .env echo "COPILOTSTUDIOAGENT__SCHEMANAME=$COPILOTSTUDIOAGENT__SCHEMANAME" >> .env echo "COPILOTSTUDIOAGENT__TENANTID=$COPILOTSTUDIOAGENT__TENANTID" >> .env echo "COPILOTSTUDIOAGENT__AGENTAPPID=$COPILOTSTUDIOAGENT__AGENTAPPID" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/copilotstudio --save-report --report-name 02-agents-copilotstudio - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-copilotstudio path: python/samples/sample_validation/reports/ validate-02-agents-custom: name: Validate 02-agents/providers/custom runs-on: ubuntu-latest environment: integration defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/custom --save-report --report-name 02-agents-custom - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-02-agents-custom path: python/samples/sample_validation/reports/ validate-03-workflows: name: Validate 03-workflows runs-on: ubuntu-latest environment: integration env: FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT || vars.AZURE_AI_PROJECT_ENDPOINT }} FOUNDRY_MODEL: ${{ vars.FOUNDRY_MODEL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "FOUNDRY_PROJECT_ENDPOINT=$FOUNDRY_PROJECT_ENDPOINT" >> .env echo "FOUNDRY_MODEL=$FOUNDRY_MODEL" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 03-workflows --save-report --report-name 03-workflows - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-03-workflows path: python/samples/sample_validation/reports/ validate-04-hosting: name: Validate 04-hosting if: false # Temporarily disabled because of sample complexity runs-on: ubuntu-latest environment: integration env: FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT || vars.AZURE_AI_PROJECT_ENDPOINT }} FOUNDRY_MODEL: ${{ vars.FOUNDRY_MODEL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} # A2A configuration A2A_AGENT_HOST: http://localhost:5001/ defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 04-hosting --save-report --report-name 04-hosting - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-04-hosting path: python/samples/sample_validation/reports/ validate-05-end-to-end: name: Validate 05-end-to-end if: false # Temporarily disabled because of sample complexity runs-on: ubuntu-latest environment: integration env: FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT || vars.AZURE_AI_PROJECT_ENDPOINT }} FOUNDRY_MODEL: ${{ vars.FOUNDRY_MODEL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} # Azure OpenAI configuration AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }} AZURE_OPENAI_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_DEPLOYMENT_NAME || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} # Azure AI Search (for evaluation samples) AZURE_SEARCH_ENDPOINT: ${{ secrets.AZURE_SEARCH_ENDPOINT }} AZURE_SEARCH_API_KEY: ${{ secrets.AZURE_SEARCH_API_KEY }} AZURE_SEARCH_INDEX_NAME: ${{ secrets.AZURE_SEARCH_INDEX_NAME }} # Evaluation sample FOUNDRY_MODEL_WORKFLOW: ${{ vars.FOUNDRY_MODEL_WORKFLOW || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} FOUNDRY_MODEL_EVAL: ${{ vars.FOUNDRY_MODEL_EVAL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir 05-end-to-end --save-report --report-name 05-end-to-end - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-05-end-to-end path: python/samples/sample_validation/reports/ validate-autogen-migration: name: Validate autogen-migration runs-on: ubuntu-latest environment: integration env: FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT || vars.AZURE_AI_PROJECT_ENDPOINT }} FOUNDRY_MODEL: ${{ vars.FOUNDRY_MODEL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} # Azure OpenAI configuration AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }} AZURE_OPENAI_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_DEPLOYMENT_NAME || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} # OpenAI configuration OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }} OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }} OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }} OPENAI_MODEL: ${{ vars.OPENAI__RESPONSESMODELID }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "FOUNDRY_PROJECT_ENDPOINT=$FOUNDRY_PROJECT_ENDPOINT" >> .env echo "FOUNDRY_MODEL=$FOUNDRY_MODEL" >> .env echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env echo "AZURE_OPENAI_DEPLOYMENT_NAME=$AZURE_OPENAI_DEPLOYMENT_NAME" >> .env echo "OPENAI_API_KEY=$OPENAI_API_KEY" >> .env echo "OPENAI_CHAT_MODEL_ID=$OPENAI_CHAT_MODEL_ID" >> .env echo "OPENAI_RESPONSES_MODEL_ID=$OPENAI_RESPONSES_MODEL_ID" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir autogen-migration --save-report --report-name autogen-migration - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-autogen-migration path: python/samples/sample_validation/reports/ validate-semantic-kernel-migration: name: Validate semantic-kernel-migration runs-on: ubuntu-latest environment: integration env: FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT || vars.AZURE_AI_PROJECT_ENDPOINT }} FOUNDRY_MODEL: ${{ vars.FOUNDRY_MODEL || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} # Azure OpenAI configuration AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }} AZURE_OPENAI_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_DEPLOYMENT_NAME || vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }} # OpenAI configuration OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }} OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }} OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }} OPENAI_MODEL: ${{ vars.OPENAI__RESPONSESMODELID }} # Copilot Studio COPILOTSTUDIOAGENT__ENVIRONMENTID: ${{ secrets.COPILOTSTUDIOAGENT__ENVIRONMENTID }} COPILOTSTUDIOAGENT__SCHEMANAME: ${{ secrets.COPILOTSTUDIOAGENT__SCHEMANAME }} COPILOTSTUDIOAGENT__TENANTID: ${{ secrets.COPILOTSTUDIOAGENT__TENANTID }} COPILOTSTUDIOAGENT__AGENTAPPID: ${{ secrets.COPILOTSTUDIOAGENT__AGENTAPPID }} defaults: run: working-directory: python steps: - uses: actions/checkout@v6 - name: Setup environment uses: ./.github/actions/sample-validation-setup with: azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} os: ${{ runner.os }} - name: Create .env for samples run: | echo "FOUNDRY_PROJECT_ENDPOINT=$FOUNDRY_PROJECT_ENDPOINT" >> .env echo "FOUNDRY_MODEL=$FOUNDRY_MODEL" >> .env echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env echo "AZURE_OPENAI_DEPLOYMENT_NAME=$AZURE_OPENAI_DEPLOYMENT_NAME" >> .env echo "OPENAI_API_KEY=$OPENAI_API_KEY" >> .env echo "OPENAI_CHAT_MODEL_ID=$OPENAI_CHAT_MODEL_ID" >> .env echo "OPENAI_RESPONSES_MODEL_ID=$OPENAI_RESPONSES_MODEL_ID" >> .env echo "COPILOTSTUDIOAGENT__ENVIRONMENTID=$COPILOTSTUDIOAGENT__ENVIRONMENTID" >> .env echo "COPILOTSTUDIOAGENT__SCHEMANAME=$COPILOTSTUDIOAGENT__SCHEMANAME" >> .env echo "COPILOTSTUDIOAGENT__TENANTID=$COPILOTSTUDIOAGENT__TENANTID" >> .env echo "COPILOTSTUDIOAGENT__AGENTAPPID=$COPILOTSTUDIOAGENT__AGENTAPPID" >> .env - name: Run sample validation run: | cd scripts && uv run python -m sample_validation --subdir semantic-kernel-migration --save-report --report-name semantic-kernel-migration - name: Upload validation report uses: actions/upload-artifact@v7 if: always() with: name: validation-report-semantic-kernel-migration path: python/samples/sample_validation/reports/ aggregate-results: name: Aggregate Results runs-on: ubuntu-latest if: always() needs: - validate-01-get-started - validate-02-agents - validate-02-agents-openai - validate-02-agents-azure - validate-02-agents-anthropic - validate-02-agents-github-copilot - validate-02-agents-amazon - validate-02-agents-ollama - validate-02-agents-foundry - validate-02-agents-copilotstudio - validate-02-agents-custom - validate-03-workflows - validate-04-hosting - validate-05-end-to-end - validate-autogen-migration - validate-semantic-kernel-migration steps: - uses: actions/checkout@v6 - name: Download all validation reports uses: actions/download-artifact@v7 with: pattern: validation-report-* path: reports/ merge-multiple: true - name: Restore validation history id: cache-restore uses: actions/cache/restore@v4 with: path: validation-history/ key: validation-history-${{ github.run_id }} restore-keys: | validation-history- - name: Aggregate results and generate trend report run: | python3 python/scripts/sample_validation/aggregate.py \ reports/ \ validation-history/history.json \ trend-report.md - name: Write trend report to job summary run: cat trend-report.md >> "$GITHUB_STEP_SUMMARY" - name: Save validation history uses: actions/cache/save@v4 with: path: validation-history/ key: validation-history-${{ github.run_id }} - name: Upload trend report uses: actions/upload-artifact@v7 if: always() with: name: validation-trend-report path: trend-report.md