Fix failing tests #75
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Docs Code Tests | |
| permissions: | |
| contents: read | |
| on: | |
| schedule: | |
| # Run every Sunday at midnight CET | |
| - cron: "0 23 * * 6" | |
| push: | |
| # Only run when pushed to the testing-ci branch | |
| branches: | |
| - testing-ci | |
| workflow_dispatch: # Manual trigger option | |
| env: | |
| # Centralize versions for easier maintenance | |
| PYTHON_VERSION: "3.10" | |
| WEAVIATE_VERSION: "1.35.0" | |
| OLLAMA_VERSION: "0.9.6" | |
| CLIP_MODEL_TAG: "sentence-transformers-clip-ViT-B-32" | |
| KEYCLOAK_VERSION: "24.0.3" | |
| jobs: | |
| test-agents: | |
| name: Test Agents | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up test environment | |
| uses: ./.github/actions/setup-test-env | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Record test start time | |
| run: echo "TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV | |
| - name: Run tests | |
| id: run-tests | |
| continue-on-error: true | |
| env: | |
| DOCS_GITHUB_ENV: "true" | |
| # Weaviate connection settings | |
| WEAVIATE_URL: ${{ secrets.WEAVIATE_URL }} | |
| WEAVIATE_HOST: ${{ secrets.WEAVIATE_HOST }} | |
| WEAVIATE_HOSTNAME: ${{ secrets.WEAVIATE_HOSTNAME }} | |
| WEAVIATE_HTTP_HOST: ${{ secrets.WEAVIATE_HTTP_HOST }} | |
| WEAVIATE_GRPC_HOST: ${{ secrets.WEAVIATE_GRPC_HOST }} | |
| WEAVIATE_API_KEY: ${{ secrets.WEAVIATE_API_KEY }} | |
| WEAVIATE_LOCAL_API_KEY: ${{ secrets.WEAVIATE_LOCAL_API_KEY }} | |
| # API Keys | |
| COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }} | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| HUGGINGFACE_API_KEY: ${{ secrets.HUGGINGFACE_API_KEY }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| # WCD credentials | |
| WCD_USERNAME: ${{ secrets.WCD_USERNAME }} | |
| WCD_PASSWORD: ${{ secrets.WCD_PASSWORD }} | |
| run: | | |
| echo "🧪 Running agents tests..." | |
| uv run pytest -m "agents" -v --tb=short --durations=10 -s --junitxml=pytest-results.xml | |
| echo "✅ Tests completed" | |
| - name: Handle test results | |
| if: always() | |
| uses: ./.github/actions/handle-test-results | |
| with: | |
| test-outcome: ${{ steps.run-tests.outcome }} | |
| test-type: 'Agents' | |
| languages-tested: 'Python, TypeScript' | |
| slack-bot-token: ${{ secrets.TESTING_CI_SLACK_BOT }} | |
| test-python: | |
| name: Test Python | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Free disk space | |
| run: | | |
| sudo rm -rf /usr/share/dotnet & | |
| sudo rm -rf /opt/ghc & | |
| sudo rm -rf /usr/local/share/boost & | |
| sudo rm -rf "$AGENT_TOOLSDIRECTORY" & | |
| sudo rm -rf /usr/local/lib/android & | |
| sudo rm -rf /usr/local/share/powershell & | |
| sudo rm -rf /usr/local/share/chromium & | |
| sudo rm -rf /usr/local/lib/node_modules & | |
| wait | |
| - name: Set up test environment | |
| uses: ./.github/actions/setup-test-env | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Start services | |
| run: | | |
| echo "🚀 Starting Weaviate and Ollama services..." | |
| mkdir -p ~/.ollama | |
| ./tests/start-weaviate.sh | |
| sleep 5 | |
| echo "✅ Services started:" | |
| docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | |
| - name: Ensure Ollama models are available | |
| run: | | |
| echo "🤖 Checking Ollama models..." | |
| for model in snowflake-arctic-embed nomic-embed-text llama3.2; do | |
| if ! docker exec tests-ollama-1 ollama list 2>/dev/null | grep -q "$model"; then | |
| echo "⬇️ Pulling model: $model" | |
| docker exec tests-ollama-1 ollama pull "$model" | |
| fi | |
| done | |
| echo "✅ All models ready" | |
| - name: Wait for all services to be ready | |
| run: | | |
| echo "⏳ Waiting for services to be ready..." | |
| declare -A services=( | |
| ["8099"]="Weaviate Main" | |
| ["8580"]="Weaviate RBAC" | |
| ["8080"]="Weaviate Instance 1" | |
| ["8090"]="Weaviate Instance 2" | |
| ["8280"]="Weaviate Instance 3" | |
| ["8180"]="Weaviate Instance 4" | |
| ["8181"]="Weaviate Instance 5" | |
| ["8182"]="Weaviate Instance 6" | |
| ) | |
| for port in "${!services[@]}"; do | |
| service_name="${services[$port]}" | |
| echo -n "Checking $service_name (port $port)... " | |
| if timeout 60 bash -c "until curl -sf http://localhost:$port/v1/.well-known/ready &>/dev/null; do sleep 2; done"; then | |
| echo "✅ Ready" | |
| else | |
| echo "⚠️ Not responding (may be optional)" | |
| fi | |
| done | |
| echo "✅ Service check completed" | |
| - name: Configure Keycloak | |
| run: | | |
| echo "🔧 Configuring Keycloak..." | |
| sleep 5 | |
| uv run python _includes/code/python/keycloak_helper_script.py | |
| echo "✅ Keycloak configuration completed" | |
| - name: Record test start time | |
| run: echo "TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV | |
| - name: Run Python tests | |
| id: run-tests | |
| continue-on-error: true | |
| env: | |
| DOCS_GITHUB_ENV: "true" | |
| WEAVIATE_URL: ${{ secrets.WEAVIATE_URL }} | |
| WEAVIATE_HOST: ${{ secrets.WEAVIATE_HOST }} | |
| WEAVIATE_HOSTNAME: ${{ secrets.WEAVIATE_HOSTNAME }} | |
| WEAVIATE_HTTP_HOST: ${{ secrets.WEAVIATE_HTTP_HOST }} | |
| WEAVIATE_GRPC_HOST: ${{ secrets.WEAVIATE_GRPC_HOST }} | |
| WEAVIATE_API_KEY: ${{ secrets.WEAVIATE_API_KEY }} | |
| WEAVIATE_LOCAL_API_KEY: ${{ secrets.WEAVIATE_LOCAL_API_KEY }} | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }} | |
| HUGGINGFACE_API_KEY: ${{ secrets.HUGGINGFACE_API_KEY }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| WCD_USERNAME: ${{ secrets.WCD_USERNAME }} | |
| WCD_PASSWORD: ${{ secrets.WCD_PASSWORD }} | |
| run: | | |
| echo "🧪 Running Python tests..." | |
| uv run pytest -m "(pyv4 or pyv3) and not agents" -v --tb=short --durations=10 -s --junitxml=pytest-results.xml | |
| echo "✅ Tests completed" | |
| - name: Handle test results | |
| if: always() | |
| uses: ./.github/actions/handle-test-results | |
| with: | |
| test-outcome: ${{ steps.run-tests.outcome }} | |
| test-type: 'Python' | |
| languages-tested: 'Python' | |
| slack-bot-token: ${{ secrets.TESTING_CI_SLACK_BOT }} | |
| - name: Stop services | |
| if: always() | |
| run: | | |
| echo "🛑 Stopping services..." | |
| ./tests/stop-weaviate.sh 2>/dev/null || echo "⚠️ Some services may have already stopped" | |
| - name: Cleanup Docker resources | |
| if: always() | |
| run: | | |
| for compose_file in tests/docker-compose*.yml; do | |
| if [[ -f "$compose_file" ]]; then | |
| docker compose -f "$compose_file" down -v --remove-orphans 2>/dev/null || true | |
| fi | |
| done | |
| docker system prune -f --volumes 2>/dev/null || true | |
| test-typescript: | |
| name: Test TypeScript | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Free disk space | |
| run: | | |
| sudo rm -rf /usr/share/dotnet & | |
| sudo rm -rf /opt/ghc & | |
| sudo rm -rf /usr/local/share/boost & | |
| sudo rm -rf "$AGENT_TOOLSDIRECTORY" & | |
| sudo rm -rf /usr/local/lib/android & | |
| wait | |
| - name: Set up test environment | |
| uses: ./.github/actions/setup-test-env | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Start services | |
| run: | | |
| echo "🚀 Starting Weaviate and Ollama services..." | |
| mkdir -p ~/.ollama | |
| ./tests/start-weaviate.sh | |
| sleep 5 | |
| echo "✅ Services started:" | |
| docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | |
| - name: Ensure Ollama models are available | |
| run: | | |
| echo "🤖 Checking Ollama models..." | |
| for model in snowflake-arctic-embed nomic-embed-text llama3.2; do | |
| if ! docker exec tests-ollama-1 ollama list 2>/dev/null | grep -q "$model"; then | |
| echo "⬇️ Pulling model: $model" | |
| docker exec tests-ollama-1 ollama pull "$model" | |
| fi | |
| done | |
| echo "✅ All models ready" | |
| - name: Wait for all services to be ready | |
| run: | | |
| echo "⏳ Waiting for services to be ready..." | |
| declare -A services=( | |
| ["8099"]="Weaviate Main" | |
| ["8580"]="Weaviate RBAC" | |
| ["8080"]="Weaviate Instance 1" | |
| ["8090"]="Weaviate Instance 2" | |
| ["8280"]="Weaviate Instance 3" | |
| ["8180"]="Weaviate Instance 4" | |
| ["8181"]="Weaviate Instance 5" | |
| ["8182"]="Weaviate Instance 6" | |
| ) | |
| for port in "${!services[@]}"; do | |
| service_name="${services[$port]}" | |
| echo -n "Checking $service_name (port $port)... " | |
| if timeout 60 bash -c "until curl -sf http://localhost:$port/v1/.well-known/ready &>/dev/null; do sleep 2; done"; then | |
| echo "✅ Ready" | |
| else | |
| echo "⚠️ Not responding (may be optional)" | |
| fi | |
| done | |
| echo "✅ Service check completed" | |
| - name: Record test start time | |
| run: echo "TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV | |
| - name: Run TypeScript tests | |
| id: run-tests | |
| continue-on-error: true | |
| env: | |
| DOCS_GITHUB_ENV: "true" | |
| WEAVIATE_URL: ${{ secrets.WEAVIATE_URL }} | |
| WEAVIATE_HOST: ${{ secrets.WEAVIATE_HOST }} | |
| WEAVIATE_HOSTNAME: ${{ secrets.WEAVIATE_HOSTNAME }} | |
| WEAVIATE_HTTP_HOST: ${{ secrets.WEAVIATE_HTTP_HOST }} | |
| WEAVIATE_GRPC_HOST: ${{ secrets.WEAVIATE_GRPC_HOST }} | |
| WEAVIATE_API_KEY: ${{ secrets.WEAVIATE_API_KEY }} | |
| WEAVIATE_LOCAL_API_KEY: ${{ secrets.WEAVIATE_LOCAL_API_KEY }} | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }} | |
| HUGGINGFACE_API_KEY: ${{ secrets.HUGGINGFACE_API_KEY }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| WCD_USERNAME: ${{ secrets.WCD_USERNAME }} | |
| WCD_PASSWORD: ${{ secrets.WCD_PASSWORD }} | |
| run: | | |
| echo "🧪 Running TypeScript tests..." | |
| uv run pytest -m "ts and not agents" -v --tb=short --durations=10 -s --junitxml=pytest-results.xml | |
| echo "✅ Tests completed" | |
| - name: Handle test results | |
| if: always() | |
| uses: ./.github/actions/handle-test-results | |
| with: | |
| test-outcome: ${{ steps.run-tests.outcome }} | |
| test-type: 'TypeScript' | |
| languages-tested: 'TypeScript' | |
| slack-bot-token: ${{ secrets.TESTING_CI_SLACK_BOT }} | |
| - name: Stop services | |
| if: always() | |
| run: | | |
| echo "🛑 Stopping services..." | |
| ./tests/stop-weaviate.sh 2>/dev/null || echo "⚠️ Some services may have already stopped" | |
| - name: Cleanup Docker resources | |
| if: always() | |
| run: | | |
| for compose_file in tests/docker-compose*.yml; do | |
| if [[ -f "$compose_file" ]]; then | |
| docker compose -f "$compose_file" down -v --remove-orphans 2>/dev/null || true | |
| fi | |
| done | |
| docker system prune -f --volumes 2>/dev/null || true | |
| test-java-v6: | |
| name: Test Java v6 | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Free disk space | |
| run: | | |
| sudo rm -rf /usr/share/dotnet & | |
| sudo rm -rf /opt/ghc & | |
| sudo rm -rf /usr/local/share/boost & | |
| sudo rm -rf "$AGENT_TOOLSDIRECTORY" & | |
| sudo rm -rf /usr/local/lib/android & | |
| wait | |
| - name: Set up test environment | |
| uses: ./.github/actions/setup-test-env | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| cache: 'maven' | |
| - name: Clone and build Java client SNAPSHOT | |
| run: | | |
| echo "📦 Building Java client SNAPSHOT..." | |
| git clone --depth 1 https://github.com/weaviate/java-client.git /tmp/java-client | |
| cd /tmp/java-client | |
| mvn install -DskipTests -Dmaven.javadoc.skip=true -q | |
| echo "✅ Java client SNAPSHOT installed" | |
| - name: Start services | |
| run: | | |
| echo "🚀 Starting Weaviate and Ollama services..." | |
| mkdir -p ~/.ollama | |
| ./tests/start-weaviate.sh | |
| sleep 5 | |
| echo "✅ Services started:" | |
| docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | |
| - name: Ensure Ollama models are available | |
| run: | | |
| echo "🤖 Checking Ollama models..." | |
| for model in snowflake-arctic-embed nomic-embed-text llama3.2; do | |
| if ! docker exec tests-ollama-1 ollama list 2>/dev/null | grep -q "$model"; then | |
| echo "⬇️ Pulling model: $model" | |
| docker exec tests-ollama-1 ollama pull "$model" | |
| fi | |
| done | |
| echo "✅ All models ready" | |
| - name: Wait for all services to be ready | |
| run: | | |
| echo "⏳ Waiting for services to be ready..." | |
| declare -A services=( | |
| ["8099"]="Weaviate Main" | |
| ["8580"]="Weaviate RBAC" | |
| ["8080"]="Weaviate Instance 1" | |
| ["8090"]="Weaviate Instance 2" | |
| ["8280"]="Weaviate Instance 3" | |
| ["8180"]="Weaviate Instance 4" | |
| ["8181"]="Weaviate Instance 5" | |
| ["8182"]="Weaviate Instance 6" | |
| ) | |
| for port in "${!services[@]}"; do | |
| service_name="${services[$port]}" | |
| echo -n "Checking $service_name (port $port)... " | |
| if timeout 60 bash -c "until curl -sf http://localhost:$port/v1/.well-known/ready &>/dev/null; do sleep 2; done"; then | |
| echo "✅ Ready" | |
| else | |
| echo "⚠️ Not responding (may be optional)" | |
| fi | |
| done | |
| echo "✅ Service check completed" | |
| - name: Configure Keycloak | |
| run: | | |
| echo "🔧 Configuring Keycloak..." | |
| sleep 5 | |
| uv run python _includes/code/python/keycloak_helper_script.py | |
| echo "✅ Keycloak configuration completed" | |
| - name: Record test start time | |
| run: echo "TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV | |
| - name: Run Java v6 tests | |
| id: run-tests | |
| continue-on-error: true | |
| env: | |
| DOCS_GITHUB_ENV: "true" | |
| WEAVIATE_URL: ${{ secrets.WEAVIATE_URL }} | |
| WEAVIATE_HOST: ${{ secrets.WEAVIATE_HOST }} | |
| WEAVIATE_HOSTNAME: ${{ secrets.WEAVIATE_HOSTNAME }} | |
| WEAVIATE_HTTP_HOST: ${{ secrets.WEAVIATE_HTTP_HOST }} | |
| WEAVIATE_GRPC_HOST: ${{ secrets.WEAVIATE_GRPC_HOST }} | |
| WEAVIATE_API_KEY: ${{ secrets.WEAVIATE_API_KEY }} | |
| WEAVIATE_LOCAL_API_KEY: ${{ secrets.WEAVIATE_LOCAL_API_KEY }} | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }} | |
| HUGGINGFACE_API_KEY: ${{ secrets.HUGGINGFACE_API_KEY }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| run: | | |
| echo "🧪 Running Java v6 tests..." | |
| uv run pytest -m "java_v6" -v --tb=short --durations=10 -s --junitxml=pytest-results.xml | |
| echo "✅ Tests completed" | |
| - name: Handle test results | |
| if: always() | |
| uses: ./.github/actions/handle-test-results | |
| with: | |
| test-outcome: ${{ steps.run-tests.outcome }} | |
| test-type: 'Java-v6' | |
| languages-tested: 'Java' | |
| slack-bot-token: ${{ secrets.TESTING_CI_SLACK_BOT }} | |
| - name: Stop services | |
| if: always() | |
| run: | | |
| echo "🛑 Stopping services..." | |
| ./tests/stop-weaviate.sh 2>/dev/null || echo "⚠️ Some services may have already stopped" | |
| - name: Cleanup Docker resources | |
| if: always() | |
| run: | | |
| for compose_file in tests/docker-compose*.yml; do | |
| if [[ -f "$compose_file" ]]; then | |
| docker compose -f "$compose_file" down -v --remove-orphans 2>/dev/null || true | |
| fi | |
| done | |
| docker system prune -f --volumes 2>/dev/null || true | |
| test-csharp: | |
| name: Test C# | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Free disk space | |
| run: | | |
| sudo rm -rf /opt/ghc & | |
| sudo rm -rf /usr/local/share/boost & | |
| sudo rm -rf "$AGENT_TOOLSDIRECTORY" & | |
| sudo rm -rf /usr/local/lib/android & | |
| wait | |
| - name: Set up test environment | |
| uses: ./.github/actions/setup-test-env | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Set up .NET 9.0 | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '9.0.x' | |
| - name: Clone C# client | |
| run: | | |
| echo "📦 Cloning C# client..." | |
| git clone --depth 1 https://github.com/weaviate/csharp-client.git "${{ github.workspace }}/../csharp-client" | |
| echo "✅ C# client cloned to $(realpath "${{ github.workspace }}/../csharp-client")" | |
| - name: Start services | |
| run: | | |
| echo "🚀 Starting Weaviate and Ollama services..." | |
| mkdir -p ~/.ollama | |
| ./tests/start-weaviate.sh | |
| sleep 5 | |
| echo "✅ Services started:" | |
| docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | |
| - name: Ensure Ollama models are available | |
| run: | | |
| echo "🤖 Checking Ollama models..." | |
| for model in snowflake-arctic-embed nomic-embed-text llama3.2; do | |
| if ! docker exec tests-ollama-1 ollama list 2>/dev/null | grep -q "$model"; then | |
| echo "⬇️ Pulling model: $model" | |
| docker exec tests-ollama-1 ollama pull "$model" | |
| fi | |
| done | |
| echo "✅ All models ready" | |
| - name: Wait for all services to be ready | |
| run: | | |
| echo "⏳ Waiting for services to be ready..." | |
| declare -A services=( | |
| ["8099"]="Weaviate Main" | |
| ["8580"]="Weaviate RBAC" | |
| ["8080"]="Weaviate Instance 1" | |
| ["8090"]="Weaviate Instance 2" | |
| ["8280"]="Weaviate Instance 3" | |
| ["8180"]="Weaviate Instance 4" | |
| ["8181"]="Weaviate Instance 5" | |
| ["8182"]="Weaviate Instance 6" | |
| ) | |
| for port in "${!services[@]}"; do | |
| service_name="${services[$port]}" | |
| echo -n "Checking $service_name (port $port)... " | |
| if timeout 60 bash -c "until curl -sf http://localhost:$port/v1/.well-known/ready &>/dev/null; do sleep 2; done"; then | |
| echo "✅ Ready" | |
| else | |
| echo "⚠️ Not responding (may be optional)" | |
| fi | |
| done | |
| echo "✅ Service check completed" | |
| - name: Configure Keycloak | |
| run: | | |
| echo "🔧 Configuring Keycloak..." | |
| sleep 5 | |
| uv run python _includes/code/python/keycloak_helper_script.py | |
| echo "✅ Keycloak configuration completed" | |
| - name: Record test start time | |
| run: echo "TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV | |
| - name: Run C# tests | |
| id: run-tests | |
| continue-on-error: true | |
| env: | |
| DOCS_GITHUB_ENV: "true" | |
| WEAVIATE_URL: ${{ secrets.WEAVIATE_URL }} | |
| WEAVIATE_HOST: ${{ secrets.WEAVIATE_HOST }} | |
| WEAVIATE_HOSTNAME: ${{ secrets.WEAVIATE_HOSTNAME }} | |
| WEAVIATE_HTTP_HOST: ${{ secrets.WEAVIATE_HTTP_HOST }} | |
| WEAVIATE_GRPC_HOST: ${{ secrets.WEAVIATE_GRPC_HOST }} | |
| WEAVIATE_API_KEY: ${{ secrets.WEAVIATE_API_KEY }} | |
| WEAVIATE_LOCAL_API_KEY: ${{ secrets.WEAVIATE_LOCAL_API_KEY }} | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }} | |
| HUGGINGFACE_API_KEY: ${{ secrets.HUGGINGFACE_API_KEY }} | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| run: | | |
| echo "🧪 Running C# tests..." | |
| uv run pytest -m "csharp" -v --tb=short --durations=10 -s --junitxml=pytest-results.xml | |
| echo "✅ Tests completed" | |
| - name: Handle test results | |
| if: always() | |
| uses: ./.github/actions/handle-test-results | |
| with: | |
| test-outcome: ${{ steps.run-tests.outcome }} | |
| test-type: 'CSharp' | |
| languages-tested: 'C#' | |
| slack-bot-token: ${{ secrets.TESTING_CI_SLACK_BOT }} | |
| - name: Stop services | |
| if: always() | |
| run: | | |
| echo "🛑 Stopping services..." | |
| ./tests/stop-weaviate.sh 2>/dev/null || echo "⚠️ Some services may have already stopped" | |
| - name: Cleanup Docker resources | |
| if: always() | |
| run: | | |
| for compose_file in tests/docker-compose*.yml; do | |
| if [[ -f "$compose_file" ]]; then | |
| docker compose -f "$compose_file" down -v --remove-orphans 2>/dev/null || true | |
| fi | |
| done | |
| docker system prune -f --volumes 2>/dev/null || true |