chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,566 @@
|
||||
#
|
||||
# This workflow will run all python integrations tests.
|
||||
#
|
||||
|
||||
name: Python Integration Tests
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches: ["main"]
|
||||
merge_group:
|
||||
branches: ["main"]
|
||||
schedule:
|
||||
- cron: "0 0 * * *" # Run at midnight UTC daily
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: "write"
|
||||
|
||||
env:
|
||||
# Configure a constant location for the uv cache
|
||||
UV_CACHE_DIR: /tmp/.uv-cache
|
||||
Python_Integration_Tests: Python_Integration_Tests
|
||||
INTEGRATION_TEST_SERVICE_SETUP_EXCEPTION: ${{ true }}
|
||||
AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME }} # azure-text-embedding-ada-002
|
||||
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_CHAT_DEPLOYMENT_NAME }}
|
||||
AZURE_OPENAI_TEXT_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_TEXT_DEPLOYMENT_NAME }}
|
||||
AZURE_OPENAI_AUDIO_TO_TEXT_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_AUDIO_TO_TEXT_DEPLOYMENT_NAME }}
|
||||
AZURE_OPENAI_TEXT_TO_AUDIO_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_TEXT_TO_AUDIO_DEPLOYMENT_NAME }}
|
||||
AZURE_OPENAI_TEXT_TO_IMAGE_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_TEXT_TO_IMAGE_DEPLOYMENT_NAME }}
|
||||
AZURE_OPENAI_API_VERSION: ${{ vars.AZURE_OPENAI_API_VERSION }}
|
||||
AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
|
||||
AZURE_OPENAI_AUDIO_TO_TEXT_ENDPOINT: ${{ secrets.AZURE_OPENAI_AUDIO_TO_TEXT_ENDPOINT }}
|
||||
AZURE_OPENAI_TEXT_TO_AUDIO_ENDPOINT: ${{ secrets.AZURE_OPENAI_TEXT_TO_AUDIO_ENDPOINT }}
|
||||
AZURE_AI_AGENT_ENDPOINT: ${{ secrets.AZURE_AI_AGENT_ENDPOINT }}
|
||||
AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME: ${{ secrets.AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME }}
|
||||
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME }}
|
||||
BING_API_KEY: ${{ secrets.BING_API_KEY }}
|
||||
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI_RESPONSES_MODEL_ID }}
|
||||
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI_CHAT_MODEL_ID }}
|
||||
OPENAI_TEXT_MODEL_ID: ${{ vars.OPENAI_TEXT_MODEL_ID }}
|
||||
OPENAI_EMBEDDING_MODEL_ID: ${{ vars.OPENAI_EMBEDDING_MODEL_ID }}
|
||||
OPENAI_AUDIO_TO_TEXT_MODEL_ID: ${{ vars.OPENAI_AUDIO_TO_TEXT_MODEL_ID }}
|
||||
OPENAI_TEXT_TO_AUDIO_MODEL_ID: ${{ vars.OPENAI_TEXT_TO_AUDIO_MODEL_ID }}
|
||||
OPENAI_TEXT_TO_IMAGE_MODEL_ID: ${{ vars.OPENAI_TEXT_TO_IMAGE_MODEL_ID }}
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
PINECONE_API_KEY: ${{ secrets.PINECONE__APIKEY }}
|
||||
POSTGRES_CONNECTION_STRING: ${{secrets.POSTGRES__CONNECTIONSTR}}
|
||||
POSTGRES_MAX_POOL: ${{ vars.POSTGRES_MAX_POOL }}
|
||||
AZURE_AI_SEARCH_API_KEY: ${{secrets.AZURE_AI_SEARCH_API_KEY}}
|
||||
AZURE_AI_SEARCH_ENDPOINT: ${{secrets.AZURE_AI_SEARCH_ENDPOINT}}
|
||||
MONGODB_ATLAS_CONNECTION_STRING: ${{secrets.MONGODB_ATLAS_CONNECTION_STRING}}
|
||||
AZURE_KEY_VAULT_ENDPOINT: ${{secrets.AZURE_KEY_VAULT_ENDPOINT}}
|
||||
AZURE_KEY_VAULT_CLIENT_ID: ${{secrets.AZURE_KEY_VAULT_CLIENT_ID}}
|
||||
AZURE_KEY_VAULT_CLIENT_SECRET: ${{secrets.AZURE_KEY_VAULT_CLIENT_SECRET}}
|
||||
ACA_POOL_MANAGEMENT_ENDPOINT: ${{secrets.ACA_POOL_MANAGEMENT_ENDPOINT}}
|
||||
MISTRALAI_API_KEY: ${{secrets.MISTRALAI_API_KEY}}
|
||||
MISTRALAI_CHAT_MODEL_ID: ${{ vars.MISTRALAI_CHAT_MODEL_ID }}
|
||||
MISTRALAI_EMBEDDING_MODEL_ID: ${{ vars.MISTRALAI_EMBEDDING_MODEL_ID }}
|
||||
ANTHROPIC_API_KEY: ${{secrets.ANTHROPIC_API_KEY}}
|
||||
ANTHROPIC_CHAT_MODEL_ID: ${{ vars.ANTHROPIC_CHAT_MODEL_ID }}
|
||||
OLLAMA_CHAT_MODEL_ID: "${{ vars.OLLAMA_CHAT_MODEL_ID || '' }}" # llama3.2:1b
|
||||
OLLAMA_CHAT_MODEL_ID_IMAGE: "${{ vars.OLLAMA_CHAT_MODEL_ID_IMAGE || '' }}" # moondream
|
||||
OLLAMA_CHAT_MODEL_ID_TOOL_CALL: "${{ vars.OLLAMA_CHAT_MODEL_ID_TOOL_CALL || '' }}" # llama3.2:1b
|
||||
OLLAMA_TEXT_MODEL_ID: "${{ vars.OLLAMA_TEXT_MODEL_ID || '' }}" # llama3.2:1b
|
||||
OLLAMA_EMBEDDING_MODEL_ID: "${{ vars.OLLAMA_EMBEDDING_MODEL_ID || '' }}" # nomic-embed-text
|
||||
GOOGLE_AI_GEMINI_MODEL_ID: ${{ vars.GOOGLE_AI_GEMINI_MODEL_ID }}
|
||||
GOOGLE_AI_EMBEDDING_MODEL_ID: ${{ vars.GOOGLE_AI_EMBEDDING_MODEL_ID }}
|
||||
GOOGLE_AI_API_KEY: ${{ secrets.GOOGLE_AI_API_KEY }}
|
||||
GOOGLE_AI_CLOUD_PROJECT_ID: ${{ vars.GOOGLE_AI_CLOUD_PROJECT_ID }}
|
||||
GOOGLE_AI_CLOUD_REGION: ${{ vars.GOOGLE_AI_CLOUD_REGION }}
|
||||
VERTEX_AI_PROJECT_ID: ${{ vars.VERTEX_AI_PROJECT_ID }}
|
||||
VERTEX_AI_GEMINI_MODEL_ID: ${{ vars.VERTEX_AI_GEMINI_MODEL_ID }}
|
||||
VERTEX_AI_EMBEDDING_MODEL_ID: ${{ vars.VERTEX_AI_EMBEDDING_MODEL_ID }}
|
||||
REDIS_CONNECTION_STRING: ${{ vars.REDIS_CONNECTION_STRING }}
|
||||
AZURE_COSMOS_DB_NO_SQL_URL: ${{ vars.AZURE_COSMOS_DB_NO_SQL_URL }}
|
||||
AZURE_COSMOS_DB_NO_SQL_KEY: ${{ secrets.AZURE_COSMOS_DB_NO_SQL_KEY }}
|
||||
BEDROCK_AGENT_AGENT_RESOURCE_ROLE_ARN: ${{ secrets.BEDROCK_AGENT_AGENT_RESOURCE_ROLE_ARN }}
|
||||
BEDROCK_AGENT_FOUNDATION_MODEL: ${{ vars.BEDROCK_AGENT_FOUNDATION_MODEL }}
|
||||
|
||||
jobs:
|
||||
paths-filter:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
pythonChanges: ${{ steps.filter.outputs.python}}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: dorny/paths-filter@v2
|
||||
id: filter
|
||||
with:
|
||||
filters: |
|
||||
python:
|
||||
- 'python/**'
|
||||
# run only if 'python' files were changed
|
||||
- name: python tests
|
||||
if: steps.filter.outputs.python == 'true'
|
||||
run: echo "Python file"
|
||||
# run only if not 'python' files were changed
|
||||
- name: not python tests
|
||||
if: steps.filter.outputs.python != 'true'
|
||||
run: echo "NOT python file"
|
||||
|
||||
python-merge-gate-ai-services:
|
||||
name: Python Pre-Merge Integration Tests - AI Services (incl samples using those)
|
||||
needs: paths-filter
|
||||
if: github.event_name != 'pull_request' && github.event_name != 'schedule' && needs.paths-filter.outputs.pythonChanges == 'true'
|
||||
strategy:
|
||||
max-parallel: 1
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.11"]
|
||||
os: [ubuntu-latest]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: python
|
||||
runs-on: ${{ matrix.os }}
|
||||
environment: "integration"
|
||||
env:
|
||||
UV_PYTHON: ${{ matrix.python-version }}
|
||||
COMPLETIONS_CONCEPT_SAMPLE: "true"
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
version: "0.5.x"
|
||||
enable-cache: true
|
||||
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
|
||||
cache-dependency-glob: "**/uv.lock"
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
uv sync --all-extras --dev
|
||||
- name: Google auth
|
||||
uses: google-github-actions/auth@v3
|
||||
with:
|
||||
project_id: ${{ vars.VERTEX_AI_PROJECT_ID }}
|
||||
credentials_json: ${{ secrets.VERTEX_AI_SERVICE_ACCOUNT_KEY }}
|
||||
- name: Set up gcloud
|
||||
uses: google-github-actions/setup-gcloud@v3
|
||||
- name: Configure AWS Credentials
|
||||
uses: aws-actions/configure-aws-credentials@v5
|
||||
with:
|
||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
aws-region: ${{ vars.AWS_REGION }}
|
||||
- name: Azure CLI Login
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: azure/login@v2
|
||||
with:
|
||||
client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
||||
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
||||
- name: Run Integration Tests
|
||||
id: run_tests_ai_services
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v --log-cli-level=INFO --durations=20 -n logical --dist loadfile --dist worksteal -m "not ollama" ./tests/integration/completions ./tests/integration/embeddings ./tests/samples ./tests/integration/cross_language
|
||||
|
||||
python-merge-gate-multi-modality:
|
||||
name: Python Pre-Merge Integration Tests - Multi-Modality
|
||||
needs: paths-filter
|
||||
if: github.event_name != 'pull_request' && github.event_name != 'schedule' && needs.paths-filter.outputs.pythonChanges == 'true'
|
||||
strategy:
|
||||
max-parallel: 1
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.11"]
|
||||
os: [ubuntu-latest]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: python
|
||||
runs-on: ${{ matrix.os }}
|
||||
environment: "integration"
|
||||
env:
|
||||
UV_PYTHON: ${{ matrix.python-version }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
version: "0.5.x"
|
||||
enable-cache: true
|
||||
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
uv sync --all-extras --dev
|
||||
- name: Azure CLI Login
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: azure/login@v2
|
||||
with:
|
||||
client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
||||
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
||||
- name: Run Integration Tests
|
||||
id: run_tests_multi_modality
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v --log-cli-level=INFO --durations=20 -n logical --dist loadfile --dist worksteal ./tests/integration/audio_to_text ./tests/integration/text_to_audio ./tests/integration/text_to_image
|
||||
|
||||
python-merge-gate-agents:
|
||||
name: Python Pre-Merge Integration Tests - Agents
|
||||
needs: paths-filter
|
||||
if: github.event_name != 'pull_request' && github.event_name != 'schedule' && needs.paths-filter.outputs.pythonChanges == 'true'
|
||||
strategy:
|
||||
max-parallel: 1
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.11"]
|
||||
os: [ubuntu-latest]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: python
|
||||
runs-on: ${{ matrix.os }}
|
||||
environment: "integration"
|
||||
env:
|
||||
UV_PYTHON: ${{ matrix.python-version }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
version: "0.5.x"
|
||||
enable-cache: true
|
||||
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
uv sync --all-extras --dev
|
||||
- name: Configure AWS Credentials
|
||||
uses: aws-actions/configure-aws-credentials@v5
|
||||
with:
|
||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
aws-region: ${{ vars.AWS_REGION }}
|
||||
- name: Azure CLI Login
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: azure/login@v2
|
||||
with:
|
||||
client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
||||
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
||||
- name: Run Integration Tests
|
||||
id: run_tests_agents
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v --log-cli-level=INFO --durations=20 -n logical --dist loadfile --dist worksteal ./tests/integration/agents
|
||||
|
||||
python-merge-gate-ollama:
|
||||
name: Python Pre-Merge Integration Tests - Ollama
|
||||
needs: paths-filter
|
||||
# Ollama tests are very unstable at the moment. It often fails to pull models from the Ollama server. Thus, this job is disabled for now.
|
||||
if: false && github.event_name != 'pull_request' && github.event_name != 'schedule' && needs.paths-filter.outputs.pythonChanges == 'true'
|
||||
strategy:
|
||||
max-parallel: 1
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.11"]
|
||||
os: [ubuntu-latest]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: python
|
||||
runs-on: ${{ matrix.os }}
|
||||
environment: "integration"
|
||||
env:
|
||||
UV_PYTHON: ${{ matrix.python-version }}
|
||||
COMPLETIONS_CONCEPT_SAMPLE: "true"
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
version: "0.5.x"
|
||||
enable-cache: true
|
||||
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
|
||||
cache-dependency-glob: "**/uv.lock"
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
uv sync --all-extras --dev
|
||||
- name: Install Ollama
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
curl -fsSL https://ollama.com/install.sh | sh
|
||||
ollama serve &
|
||||
sleep 5
|
||||
- name: Pull model in Ollama
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID }}
|
||||
ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID_IMAGE }}
|
||||
ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID_TOOL_CALL }}
|
||||
ollama pull ${{ vars.OLLAMA_TEXT_MODEL_ID }}
|
||||
ollama pull ${{ vars.OLLAMA_EMBEDDING_MODEL_ID }}
|
||||
ollama list
|
||||
- name: Run Integration Tests
|
||||
id: run_tests_ai_services
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v --log-cli-level=INFO --durations=0 -n logical --dist loadfile --dist worksteal -m ollama --timeout=300 ./tests/integration/completions ./tests/integration/embeddings
|
||||
|
||||
python-merge-gate-memory:
|
||||
name: Python Pre-Merge Integration Tests - Memory (incl samples using those)
|
||||
needs: paths-filter
|
||||
if: github.event_name != 'pull_request' && github.event_name != 'schedule' && needs.paths-filter.outputs.pythonChanges == 'true'
|
||||
strategy:
|
||||
max-parallel: 1
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.11"]
|
||||
os: [ubuntu-latest]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: python
|
||||
runs-on: ${{ matrix.os }}
|
||||
environment: "integration"
|
||||
env:
|
||||
UV_PYTHON: ${{ matrix.python-version }}
|
||||
MEMORY_CONCEPT_SAMPLE: "true"
|
||||
# Service containers to run with for the memory connectors, this only works on Ubuntu
|
||||
services:
|
||||
# Label used to access the service container
|
||||
redis:
|
||||
# Docker Hub image
|
||||
image: redis/redis-stack-server:latest
|
||||
ports:
|
||||
# Opens tcp port 6379 on the host and service container
|
||||
- 6379:6379
|
||||
weaviate:
|
||||
image: cr.weaviate.io/semitechnologies/weaviate:1.33.3
|
||||
ports:
|
||||
- 8080:8080
|
||||
- 50051:50051
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
version: "0.5.x"
|
||||
enable-cache: true
|
||||
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
|
||||
cache-dependency-glob: "**/uv.lock"
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
uv sync --all-extras --dev
|
||||
- name: Azure CLI Login
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: azure/login@v2
|
||||
with:
|
||||
client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
||||
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
||||
- name: Run Integration Tests
|
||||
id: run_tests_memory
|
||||
timeout-minutes: 15
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v --log-cli-level=INFO --durations=20 -n logical --dist loadfile --dist worksteal ./tests/integration/memory ./tests/samples
|
||||
|
||||
python-integration-tests:
|
||||
name: Python Integration Tests - Scheduled run
|
||||
needs: paths-filter
|
||||
if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && needs.paths-filter.outputs.pythonChanges == 'true'
|
||||
strategy:
|
||||
max-parallel: 1
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.10", "3.11", "3.12"]
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: python
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
UV_PYTHON: ${{ matrix.python-version }}
|
||||
MEMORY_CONCEPT_SAMPLE: "true"
|
||||
COMPLETIONS_CONCEPT_SAMPLE: "true"
|
||||
# Service containers to run with for the memory connectors, this only works on Ubuntu
|
||||
services:
|
||||
# Label used to access the service container
|
||||
redis:
|
||||
# Docker Hub image
|
||||
image: redis/redis-stack-server:latest
|
||||
ports:
|
||||
# Opens tcp port 6379 on the host and service container
|
||||
- 6379:6379
|
||||
weaviate:
|
||||
image: cr.weaviate.io/semitechnologies/weaviate:1.26.6
|
||||
ports:
|
||||
- 8080:8080
|
||||
- 50051:50051
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set up uv
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
version: "0.5.x"
|
||||
enable-cache: true
|
||||
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
|
||||
cache-dependency-glob: "**/uv.lock"
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
uv sync --all-extras --dev
|
||||
- name: Install Ollama
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
curl -fsSL https://ollama.com/install.sh | sh
|
||||
ollama serve &
|
||||
sleep 5
|
||||
- name: Pull model in Ollama
|
||||
# Ollama tests are very unstable at the moment. It often fails to pull models from the Ollama server. Thus, Ollama is disabled for now.
|
||||
if: false && matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID }}
|
||||
ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID_IMAGE }}
|
||||
ollama pull ${{ vars.OLLAMA_CHAT_MODEL_ID_TOOL_CALL }}
|
||||
ollama pull ${{ vars.OLLAMA_TEXT_MODEL_ID }}
|
||||
ollama pull ${{ vars.OLLAMA_EMBEDDING_MODEL_ID }}
|
||||
ollama list
|
||||
- name: Google auth
|
||||
uses: google-github-actions/auth@v3
|
||||
with:
|
||||
project_id: ${{ vars.VERTEX_AI_PROJECT_ID }}
|
||||
credentials_json: ${{ secrets.VERTEX_AI_SERVICE_ACCOUNT_KEY }}
|
||||
- name: Set up gcloud
|
||||
uses: google-github-actions/setup-gcloud@v3
|
||||
- name: Configure AWS Credentials
|
||||
uses: aws-actions/configure-aws-credentials@v5
|
||||
with:
|
||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
aws-region: ${{ vars.AWS_REGION }}
|
||||
- name: Start Azure Cosmos DB emulator
|
||||
if: matrix.os == 'windows-latest'
|
||||
run: |
|
||||
Write-Host "Launching Cosmos DB Emulator"
|
||||
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
|
||||
Start-CosmosDbEmulator
|
||||
- name: Azure CLI Login
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: azure/login@v2
|
||||
with:
|
||||
client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
||||
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
||||
- name: Run Integration Tests - Completions
|
||||
id: run_tests_completions
|
||||
timeout-minutes: 10
|
||||
shell: bash
|
||||
# Ollama tests are very unstable at the moment. It often fails to pull models from the Ollama server. Thus, Ollama is disabled for now.
|
||||
run: |
|
||||
uv run pytest -v -n logical --dist loadfile --dist worksteal -m "not ollama" ./tests/integration/completions
|
||||
- name: Run Integration Tests - Embeddings
|
||||
id: run_tests_embeddings
|
||||
timeout-minutes: 5
|
||||
shell: bash
|
||||
# Ollama tests are very unstable at the moment. It often fails to pull models from the Ollama server. Thus, Ollama is disabled for now.
|
||||
run: |
|
||||
uv run pytest -v -n logical --dist loadfile --dist worksteal -m "not ollama" ./tests/integration/embeddings
|
||||
- name: Run Integration Tests - Memory
|
||||
id: run_tests_memory
|
||||
timeout-minutes: 5
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v -n logical --dist loadfile --dist worksteal ./tests/integration/memory
|
||||
- name: Run Integration Tests - Cross Language
|
||||
id: run_tests_cross_language
|
||||
timeout-minutes: 5
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v -n logical --dist loadfile --dist worksteal ./tests/integration/cross_language
|
||||
- name: Run Integration Tests - Planning
|
||||
id: run_tests_planning
|
||||
timeout-minutes: 5
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v -n logical --dist loadfile --dist worksteal ./tests/integration/planning
|
||||
- name: Run Integration Tests - Samples
|
||||
id: run_tests_samples
|
||||
timeout-minutes: 5
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v -n logical --dist loadfile --dist worksteal ./tests/samples
|
||||
- name: Run Integration Tests - Agents
|
||||
id: run_tests_agents
|
||||
timeout-minutes: 10
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v -n logical --dist loadfile --dist worksteal ./tests/integration/agents
|
||||
- name: Run Integration Tests - Multi-Modality
|
||||
id: run_tests_multi_modality
|
||||
timeout-minutes: 5
|
||||
shell: bash
|
||||
run: |
|
||||
uv run pytest -v -n logical --dist loadfile --dist worksteal ./tests/integration/audio_to_text ./tests/integration/text_to_audio ./tests/integration/text_to_image
|
||||
|
||||
# This final job is required to satisfy the merge queue. It must only run (or succeed) if no tests failed
|
||||
python-integration-tests-check:
|
||||
if: always()
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
max-parallel: 1
|
||||
fail-fast: false
|
||||
needs:
|
||||
[
|
||||
python-merge-gate-ai-services,
|
||||
python-merge-gate-ollama,
|
||||
python-merge-gate-memory,
|
||||
python-merge-gate-agents,
|
||||
python-merge-gate-multi-modality,
|
||||
python-integration-tests,
|
||||
]
|
||||
steps:
|
||||
- name: Get Date
|
||||
shell: bash
|
||||
run: |
|
||||
echo "date=$(date +'%m/%d/%Y %H:%M:%S')" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Run Type is Daily
|
||||
if: ${{ github.event_name == 'schedule' }}
|
||||
shell: bash
|
||||
run: |
|
||||
echo "run_type=Daily" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Run Type is Manual
|
||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
||||
shell: bash
|
||||
run: |
|
||||
echo "run_type=Manual" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Run Type is ${{ github.event_name }}
|
||||
if: ${{ github.event_name != 'schedule' && github.event_name != 'workflow_dispatch'}}
|
||||
shell: bash
|
||||
run: |
|
||||
echo "run_type=${{ github.event_name }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Fail workflow if tests failed
|
||||
id: check_tests_failed
|
||||
if: contains(join(needs.*.result, ','), 'failure')
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: core.setFailed('Integration Tests Failed!')
|
||||
|
||||
- name: Fail workflow if tests cancelled
|
||||
id: check_tests_cancelled
|
||||
if: contains(join(needs.*.result, ','), 'cancelled')
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: core.setFailed('Integration Tests Cancelled!')
|
||||
|
||||
- name: Microsoft Teams Notification
|
||||
uses: skitionek/notify-microsoft-teams@v1.0.9
|
||||
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
|
||||
with:
|
||||
webhook_url: ${{ secrets.MSTEAMS_WEBHOOK }}
|
||||
dry_run: ${{ env.run_type != 'Daily' && env.run_type != 'Manual'}}
|
||||
job: ${{ toJson(job) }}
|
||||
steps: ${{ toJson(steps) }}
|
||||
title: "{title: ` ${{ env.run_type }}: ${{ env.date }} `, text: ` ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}`}"
|
||||
|
||||
- name: Microsoft Teams Notification (Dry Run)
|
||||
uses: skitionek/notify-microsoft-teams@v1.0.9
|
||||
if: github.ref != 'refs/heads/main'
|
||||
with:
|
||||
webhook_url: NONE
|
||||
dry_run: ${{ env.run_type != 'Daily' && env.run_type != 'Manual'}}
|
||||
job: ${{ toJson(job) }}
|
||||
steps: ${{ toJson(steps) }}
|
||||
title: "{title: ` ${{ env.run_type }}: ${{ env.date }} `, text: ` ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}`}"
|
||||
Reference in New Issue
Block a user