name: Test External Providers on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test-external-providers: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 with: python-version: "3.10" - name: Install Ollama run: | curl -fsSL https://ollama.com/install.sh | sh - name: Pull Ollama image run: | ollama pull llama3.2:3b-instruct-fp16 - name: Start Ollama in background run: | nohup ollama run llama3.2:3b-instruct-fp16 --keepalive=30m > ollama.log 2>&1 & - name: Set Up Environment and Install Dependencies run: | uv sync --extra dev --extra test uv pip install -e . - name: Install Ollama custom provider run: | mkdir -p tests/external-provider/llama-stack-provider-ollama/src/ cp -a llama_stack/providers/remote/inference/ollama/ tests/external-provider/llama-stack-provider-ollama/src/llama_stack_provider_ollama uv pip install tests/external-provider/llama-stack-provider-ollama - name: Create provider configuration run: | mkdir -p /tmp/providers.d/remote/inference cp tests/external-provider/llama-stack-provider-ollama/custom_ollama.yaml /tmp/providers.d/remote/inference/custom_ollama.yaml - name: Wait for Ollama to start run: | echo "Waiting for Ollama..." for i in {1..30}; do if curl -s http://localhost:11434 | grep -q "Ollama is running"; then echo "Ollama is running!" exit 0 fi sleep 1 done echo "Ollama failed to start" ollama ps ollama.log exit 1 - name: Start Llama Stack server in background env: INFERENCE_MODEL: "meta-llama/Llama-3.2-3B-Instruct" run: | source .venv/bin/activate nohup uv run llama stack run tests/external-provider/llama-stack-provider-ollama/run.yaml --image-type venv > server.log 2>&1 & - name: Wait for Llama Stack server to be ready run: | echo "Waiting for Llama Stack server..." for i in {1..30}; do if curl -s http://localhost:8321/v1/health | grep -q "OK"; then echo "Llama Stack server is up!" if grep -q "remote::custom_ollama from /tmp/providers.d/remote/inference/custom_ollama.yaml" server.log; then echo "Llama Stack server is using custom Ollama provider" exit 0 else echo "Llama Stack server is not using custom Ollama provider" exit 1 fi fi sleep 1 done echo "Llama Stack server failed to start" cat server.log exit 1 - name: run inference tests run: | uv run pytest -v tests/integration/inference/test_text_inference.py --stack-config="http://localhost:8321" --text-model="meta-llama/Llama-3.2-3B-Instruct" --embedding-model=all-MiniLM-L6-v2