From e5df629ff32d84a240b7a6473b3add1b95f91691 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Thu, 30 Oct 2025 12:51:43 +0300 Subject: [PATCH 1/6] CI: Extract Windows and MacOS tests to separate job --- .../test_different_operating_systems.yml | 16 ++++++++----- .github/workflows/test_suites.yml | 23 +++++++++++++++---- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test_different_operating_systems.yml b/.github/workflows/test_different_operating_systems.yml index 64f1a14f9..53745ebee 100644 --- a/.github/workflows/test_different_operating_systems.yml +++ b/.github/workflows/test_different_operating_systems.yml @@ -10,6 +10,10 @@ on: required: false type: string default: '["3.10.x", "3.12.x", "3.13.x"]' + os: + required: false + type: string + default: '["ubuntu-22.04", "macos-15", "windows-latest"]' secrets: LLM_PROVIDER: required: true @@ -43,7 +47,7 @@ jobs: strategy: matrix: python-version: ${{ fromJSON(inputs.python-versions) }} - os: [ubuntu-22.04, macos-15, windows-latest] + os: ${{ fromJSON(inputs.os) }} fail-fast: false steps: - name: Check out @@ -79,7 +83,7 @@ jobs: strategy: matrix: python-version: ${{ fromJSON(inputs.python-versions) }} - os: [ ubuntu-22.04, macos-15, windows-latest ] + os: ${{ fromJSON(inputs.os) }} fail-fast: false steps: - name: Check out @@ -115,7 +119,7 @@ jobs: strategy: matrix: python-version: ${{ fromJSON(inputs.python-versions) }} - os: [ ubuntu-22.04, macos-15, windows-latest ] + os: ${{ fromJSON(inputs.os) }} fail-fast: false steps: - name: Check out @@ -151,7 +155,7 @@ jobs: strategy: matrix: python-version: ${{ fromJSON(inputs.python-versions) }} - os: [ ubuntu-22.04, macos-15, windows-latest ] + os: ${{ fromJSON(inputs.os) }} fail-fast: false steps: - name: Check out @@ -180,7 +184,7 @@ jobs: strategy: matrix: python-version: ${{ fromJSON(inputs.python-versions) }} - os: [ ubuntu-22.04, macos-15, windows-latest ] + os: ${{ fromJSON(inputs.os) }} fail-fast: false steps: - name: Check out @@ -217,7 +221,7 @@ jobs: strategy: matrix: python-version: ${{ fromJSON(inputs.python-versions) }} - os: [ ubuntu-22.04, macos-15, windows-latest ] + os: ${{ fromJSON(inputs.os) }} fail-fast: false steps: - name: Check out diff --git a/.github/workflows/test_suites.yml b/.github/workflows/test_suites.yml index 5c1597a93..43099c03b 100644 --- a/.github/workflows/test_suites.yml +++ b/.github/workflows/test_suites.yml @@ -80,14 +80,24 @@ jobs: uses: ./.github/workflows/notebooks_tests.yml secrets: inherit - different-operating-systems-tests: - name: Operating System and Python Tests + different-os-tests-basic: + name: OS and Python Tests Ubuntu needs: [basic-tests, e2e-tests] uses: ./.github/workflows/test_different_operating_systems.yml with: python-versions: '["3.10.x", "3.11.x", "3.12.x", "3.13.x"]' + os: '["ubuntu-22.04"]' secrets: inherit + different-os-tests-extended: + name: OS and Python Tests Extended + needs: [basic-tests, e2e-tests] + uses: ./.github/workflows/test_different_operating_systems.yml + with: + python-versions: '["3.13.x"]' + os: '["macos-15", "windows-latest"]' + secrets: inherit + # Matrix-based vector database tests vector-db-tests: name: Vector DB Tests @@ -135,7 +145,8 @@ jobs: e2e-tests, graph-db-tests, notebook-tests, - different-operating-systems-tests, + different-os-tests-basic, + different-os-tests-extended, vector-db-tests, example-tests, llm-tests, @@ -155,7 +166,8 @@ jobs: cli-tests, graph-db-tests, notebook-tests, - different-operating-systems-tests, + different-os-tests-basic, + different-os-tests-extended, vector-db-tests, example-tests, db-examples-tests, @@ -176,7 +188,8 @@ jobs: "${{ needs.cli-tests.result }}" == "success" && "${{ needs.graph-db-tests.result }}" == "success" && "${{ needs.notebook-tests.result }}" == "success" && - "${{ needs.different-operating-systems-tests.result }}" == "success" && + "${{ needs.different-os-tests-basic.result }}" == "success" && + "${{ needs.different-os-tests-extended.result }}" == "success" && "${{ needs.vector-db-tests.result }}" == "success" && "${{ needs.example-tests.result }}" == "success" && "${{ needs.db-examples-tests.result }}" == "success" && From b30b52921a41132980f77f140e19519d0de23f4a Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Thu, 30 Oct 2025 13:08:09 +0300 Subject: [PATCH 2/6] Remove trailing whitespaces --- .github/workflows/test_different_operating_systems.yml | 4 ++-- .github/workflows/test_suites.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_different_operating_systems.yml b/.github/workflows/test_different_operating_systems.yml index 53745ebee..b6b3f7b3c 100644 --- a/.github/workflows/test_different_operating_systems.yml +++ b/.github/workflows/test_different_operating_systems.yml @@ -13,7 +13,7 @@ on: os: required: false type: string - default: '["ubuntu-22.04", "macos-15", "windows-latest"]' + default: '["ubuntu-22.04", "macos-15", "windows-latest"]' secrets: LLM_PROVIDER: required: true @@ -119,7 +119,7 @@ jobs: strategy: matrix: python-version: ${{ fromJSON(inputs.python-versions) }} - os: ${{ fromJSON(inputs.os) }} + os: ${{ fromJSON(inputs.os) }} fail-fast: false steps: - name: Check out diff --git a/.github/workflows/test_suites.yml b/.github/workflows/test_suites.yml index 43099c03b..44cfb03cf 100644 --- a/.github/workflows/test_suites.yml +++ b/.github/workflows/test_suites.yml @@ -96,7 +96,7 @@ jobs: with: python-versions: '["3.13.x"]' os: '["macos-15", "windows-latest"]' - secrets: inherit + secrets: inherit # Matrix-based vector database tests vector-db-tests: From a60e53964c7eaea79680508bf33422dc35bd9056 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Fri, 31 Oct 2025 12:37:38 +0100 Subject: [PATCH 3/6] Potential fix for code scanning alert no. 399: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/test_suites.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test_suites.yml b/.github/workflows/test_suites.yml index 44cfb03cf..be1e354fc 100644 --- a/.github/workflows/test_suites.yml +++ b/.github/workflows/test_suites.yml @@ -1,4 +1,6 @@ name: Test Suites +permissions: + contents: read on: push: From 645bda38e340a17fdc156c43a33a384d905ce603 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Fri, 31 Oct 2025 13:23:49 +0100 Subject: [PATCH 4/6] chore: Fix Ollama test / update Ollama API usage --- .github/workflows/test_ollama.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_ollama.yml b/.github/workflows/test_ollama.yml index fbd687319..61aafb9b7 100644 --- a/.github/workflows/test_ollama.yml +++ b/.github/workflows/test_ollama.yml @@ -48,7 +48,7 @@ jobs: - name: Wait for Ollama to be ready run: | for i in {1..30}; do - if curl -s http://localhost:11434/v1/models > /dev/null; then + if curl -s http://localhost:11434/api/tags > /dev/null; then echo "Ollama is ready" exit 0 fi @@ -75,7 +75,7 @@ jobs: { "role": "user", "content": "Whatever I say, answer with Yes." } ] }' - curl -X POST http://127.0.0.1:11434/v1/embeddings \ + curl -X POST http://127.0.0.1:11434/api/embed \ -H "Content-Type: application/json" \ -d '{ "model": "avr/sfr-embedding-mistral:latest", @@ -98,7 +98,7 @@ jobs: LLM_MODEL: "phi4" EMBEDDING_PROVIDER: "ollama" EMBEDDING_MODEL: "avr/sfr-embedding-mistral:latest" - EMBEDDING_ENDPOINT: "http://localhost:11434/api/embeddings" + EMBEDDING_ENDPOINT: "http://localhost:11434/api/embed" EMBEDDING_DIMENSIONS: "4096" HUGGINGFACE_TOKENIZER: "Salesforce/SFR-Embedding-Mistral" run: uv run python ./examples/python/simple_example.py From 5d2d4e51f110d0832d30e3d72118d7adbcda8376 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Fri, 31 Oct 2025 13:30:26 +0100 Subject: [PATCH 5/6] Ollama: Use openAI compatible embeggings API --- .github/workflows/test_ollama.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_ollama.yml b/.github/workflows/test_ollama.yml index 61aafb9b7..edc36e24c 100644 --- a/.github/workflows/test_ollama.yml +++ b/.github/workflows/test_ollama.yml @@ -48,7 +48,7 @@ jobs: - name: Wait for Ollama to be ready run: | for i in {1..30}; do - if curl -s http://localhost:11434/api/tags > /dev/null; then + if curl -s http://localhost:11434/v1/models > /dev/null; then echo "Ollama is ready" exit 0 fi @@ -75,7 +75,7 @@ jobs: { "role": "user", "content": "Whatever I say, answer with Yes." } ] }' - curl -X POST http://127.0.0.1:11434/api/embed \ + curl -X POST http://127.0.0.1:11434/v1/embeddings \ -H "Content-Type: application/json" \ -d '{ "model": "avr/sfr-embedding-mistral:latest", @@ -98,7 +98,7 @@ jobs: LLM_MODEL: "phi4" EMBEDDING_PROVIDER: "ollama" EMBEDDING_MODEL: "avr/sfr-embedding-mistral:latest" - EMBEDDING_ENDPOINT: "http://localhost:11434/api/embed" + EMBEDDING_ENDPOINT: "http://localhost:11434/v1/embeddings" EMBEDDING_DIMENSIONS: "4096" HUGGINGFACE_TOKENIZER: "Salesforce/SFR-Embedding-Mistral" run: uv run python ./examples/python/simple_example.py From 737f792ac6fe175930dcea5f5185104f4029c19d Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Fri, 31 Oct 2025 13:43:29 +0100 Subject: [PATCH 6/6] use api/embed for ollama api --- .github/workflows/test_ollama.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_ollama.yml b/.github/workflows/test_ollama.yml index edc36e24c..686545c70 100644 --- a/.github/workflows/test_ollama.yml +++ b/.github/workflows/test_ollama.yml @@ -75,7 +75,7 @@ jobs: { "role": "user", "content": "Whatever I say, answer with Yes." } ] }' - curl -X POST http://127.0.0.1:11434/v1/embeddings \ + curl -X POST http://127.0.0.1:11434/api/embed \ -H "Content-Type: application/json" \ -d '{ "model": "avr/sfr-embedding-mistral:latest", @@ -98,7 +98,7 @@ jobs: LLM_MODEL: "phi4" EMBEDDING_PROVIDER: "ollama" EMBEDDING_MODEL: "avr/sfr-embedding-mistral:latest" - EMBEDDING_ENDPOINT: "http://localhost:11434/v1/embeddings" + EMBEDDING_ENDPOINT: "http://localhost:11434/api/embed" EMBEDDING_DIMENSIONS: "4096" HUGGINGFACE_TOKENIZER: "Salesforce/SFR-Embedding-Mistral" run: uv run python ./examples/python/simple_example.py