From 422684f6e5c6397b14a9ef623c142f2ecb7a8e33 Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 06:07:24 +0000 Subject: [PATCH 01/11] cache docker image --- .github/workflows/pr-test-rust.yml | 44 +++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index cb4fae8dcc..3b7cdf4649 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -322,6 +322,27 @@ jobs: echo "LD_LIBRARY_PATH=$HOME/instant-client/instantclient_23_9:$LD_LIBRARY_PATH" >> $GITHUB_ENV + - name: Cache Oracle Docker image + if: matrix.setup_oracle + id: cache-oracle-image + uses: actions/cache@v5 + with: + path: /tmp/oracle-xe-21-slim.tar + key: docker-oracle-xe-21-slim + + - name: Load or pull Oracle Docker image + if: matrix.setup_oracle + run: | + if [ -f /tmp/oracle-xe-21-slim.tar ]; then + echo "Loading Oracle image from cache..." + docker load -i /tmp/oracle-xe-21-slim.tar + else + echo "Pulling Oracle image from Docker Hub..." + docker pull gvenzl/oracle-xe:21-slim + echo "Saving Oracle image to cache..." + docker save gvenzl/oracle-xe:21-slim -o /tmp/oracle-xe-21-slim.tar + fi + - name: Start Oracle Database if: matrix.setup_oracle run: | @@ -333,12 +354,33 @@ jobs: echo "ATP_PASSWORD=oracle" >> $GITHUB_ENV echo "ATP_DSN=localhost:1521/XEPDB1" >> $GITHUB_ENV + - name: Cache Brave MCP Docker image + if: matrix.setup_brave + id: cache-brave-image + uses: actions/cache@v5 + with: + path: /tmp/brave-search-mcp-sse.tar + key: docker-brave-search-mcp-sse-1.0.10 + + - name: Load or pull Brave MCP Docker image + if: matrix.setup_brave + run: | + if [ -f /tmp/brave-search-mcp-sse.tar ]; then + echo "Loading Brave MCP image from cache..." + docker load -i /tmp/brave-search-mcp-sse.tar + else + echo "Pulling Brave MCP image from Docker Hub..." + docker pull shoofio/brave-search-mcp-sse:1.0.10 + echo "Saving Brave MCP image to cache..." + docker save shoofio/brave-search-mcp-sse:1.0.10 -o /tmp/brave-search-mcp-sse.tar + fi + - name: Start Brave MCP Server if: matrix.setup_brave env: BRAVE_API_KEY: ${{ secrets.BRAVE_API_KEY }} run: | - docker run -d --rm \ + docker run -d \ -p 8001:8080 \ -e BRAVE_API_KEY \ --name brave-search-server \ From 6538639c2c3ed77eb57b59de6e31fe6f5cfdf983 Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 06:31:23 +0000 Subject: [PATCH 02/11] please work --- .github/workflows/pr-test-rust.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index 3b7cdf4649..7b3485d241 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -417,11 +417,11 @@ jobs: - name: Cleanup Brave MCP Server if: always() && matrix.setup_brave - run: docker rm -f brave-search-server || true + run: docker kill brave-search-server || true; docker rm brave-search-server || true - name: Cleanup Oracle Database if: always() && matrix.setup_oracle - run: docker rm -f oracle-db || true + run: docker kill oracle-db || true; docker rm oracle-db || true go-unit-tests: name: go-unit-tests From ee0df13fa44272eb35c2aa94fe9ffadedb7f039f Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 06:32:33 +0000 Subject: [PATCH 03/11] boost test --- .github/workflows/pr-test-rust.yml | 118 ++++++++++++++--------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index 7b3485d241..c4a5345b9c 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -215,15 +215,15 @@ jobs: fail-fast: false matrix: include: - - name: benchmarks - timeout: 20 - test_dirs: "e2e_test/benchmarks" - extra_deps: "genai-bench==0.0.3" - env_vars: "" - reruns: "" - upload_benchmarks: true - parallel_opts: "" # No parallel for benchmarks (performance measurement) - ignore_opts: "--ignore=e2e_test/benchmarks/test_go_bindings_perf.py --ignore=e2e_test/benchmarks/test_nightly_perf.py" # Go and nightly benchmarks run in dedicated jobs + # - name: benchmarks + # timeout: 20 + # test_dirs: "e2e_test/benchmarks" + # extra_deps: "genai-bench==0.0.3" + # env_vars: "" + # reruns: "" + # upload_benchmarks: true + # parallel_opts: "" # No parallel for benchmarks (performance measurement) + # ignore_opts: "--ignore=e2e_test/benchmarks/test_go_bindings_perf.py --ignore=e2e_test/benchmarks/test_nightly_perf.py" # Go and nightly benchmarks run in dedicated jobs - name: responses timeout: 25 test_dirs: "e2e_test/responses" @@ -234,56 +234,56 @@ jobs: setup_brave: true parallel_opts: "" # Cloud backend tests not compatible with parallel execution ignore_opts: "" - - name: e2e - timeout: 20 - test_dirs: "e2e_test/router e2e_test/embeddings" - # py is needed for pytest-parallel; sentence-transformers provides HuggingFace reference embeddings - extra_deps: "pytest-parallel py sentence-transformers" - env_vars: "SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" - reruns: "--reruns 2 --reruns-delay 5" - parallel_opts: "--workers 1 --tests-per-worker 4" # Thread-based parallelism - ignore_opts: "" - - name: chat-completions-sglang - timeout: 20 - test_dirs: "e2e_test/chat_completions" - extra_deps: "pytest-parallel py" - env_vars: "E2E_RUNTIME=sglang SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" - reruns: "--reruns 2 --reruns-delay 5" - parallel_opts: "--workers 1 --tests-per-worker 4" - test_filter: "" - ignore_opts: "" - - name: chat-completions-vllm - timeout: 20 - test_dirs: "e2e_test/chat_completions" - extra_deps: "pytest-parallel py" - env_vars: "E2E_RUNTIME=vllm SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" - reruns: "--reruns 2 --reruns-delay 5" - parallel_opts: "--workers 1 --tests-per-worker 4" - # TODO: Remove filter when vLLM supports logprobs and n>1 with greedy sampling - # Excludes: 5-grpc (logprobs=5), 2-None-grpc (n=2 with no logprobs), multiple_choices (n=2 tests) - test_filter: "-k 'not (5-grpc or 2-None-grpc or multiple_choices)'" - setup_vllm: true - ignore_opts: "" - - name: vllm-pd - timeout: 15 - test_dirs: "e2e_test/router/test_pd_mmlu.py" - extra_deps: "" - env_vars: "E2E_RUNTIME=vllm SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" - reruns: "--reruns 2 --reruns-delay 5" - parallel_opts: "" - test_filter: "" - setup_vllm: true - ignore_opts: "" - - name: chat-completions-trtllm - timeout: 25 - test_dirs: "e2e_test/chat_completions" - extra_deps: "pytest-parallel py" - env_vars: "E2E_RUNTIME=trtllm SHOW_WORKER_LOGS=1 SHOW_ROUTER_LOGS=1" - reruns: "--reruns 2 --reruns-delay 5" - parallel_opts: "--workers 1 --tests-per-worker 4" - test_filter: "" - setup_trtllm: true - ignore_opts: "" + # - name: e2e + # timeout: 20 + # test_dirs: "e2e_test/router e2e_test/embeddings" + # # py is needed for pytest-parallel; sentence-transformers provides HuggingFace reference embeddings + # extra_deps: "pytest-parallel py sentence-transformers" + # env_vars: "SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" + # reruns: "--reruns 2 --reruns-delay 5" + # parallel_opts: "--workers 1 --tests-per-worker 4" # Thread-based parallelism + # ignore_opts: "" + # - name: chat-completions-sglang + # timeout: 20 + # test_dirs: "e2e_test/chat_completions" + # extra_deps: "pytest-parallel py" + # env_vars: "E2E_RUNTIME=sglang SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" + # reruns: "--reruns 2 --reruns-delay 5" + # parallel_opts: "--workers 1 --tests-per-worker 4" + # test_filter: "" + # ignore_opts: "" + # - name: chat-completions-vllm + # timeout: 20 + # test_dirs: "e2e_test/chat_completions" + # extra_deps: "pytest-parallel py" + # env_vars: "E2E_RUNTIME=vllm SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" + # reruns: "--reruns 2 --reruns-delay 5" + # parallel_opts: "--workers 1 --tests-per-worker 4" + # # TODO: Remove filter when vLLM supports logprobs and n>1 with greedy sampling + # # Excludes: 5-grpc (logprobs=5), 2-None-grpc (n=2 with no logprobs), multiple_choices (n=2 tests) + # test_filter: "-k 'not (5-grpc or 2-None-grpc or multiple_choices)'" + # setup_vllm: true + # ignore_opts: "" + # - name: vllm-pd + # timeout: 15 + # test_dirs: "e2e_test/router/test_pd_mmlu.py" + # extra_deps: "" + # env_vars: "E2E_RUNTIME=vllm SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" + # reruns: "--reruns 2 --reruns-delay 5" + # parallel_opts: "" + # test_filter: "" + # setup_vllm: true + # ignore_opts: "" + # - name: chat-completions-trtllm + # timeout: 25 + # test_dirs: "e2e_test/chat_completions" + # extra_deps: "pytest-parallel py" + # env_vars: "E2E_RUNTIME=trtllm SHOW_WORKER_LOGS=1 SHOW_ROUTER_LOGS=1" + # reruns: "--reruns 2 --reruns-delay 5" + # parallel_opts: "--workers 1 --tests-per-worker 4" + # test_filter: "" + # setup_trtllm: true + # ignore_opts: "" runs-on: k8s-runner-gpu timeout-minutes: ${{ matrix.timeout }} steps: From 606f01f89bc5b50ae10dff28e9808d5c52ecf66f Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 17:16:12 +0000 Subject: [PATCH 04/11] clean --- .github/workflows/pr-test-rust.yml | 136 ++++++++++++++--------------- 1 file changed, 64 insertions(+), 72 deletions(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index c4a5345b9c..92cbca1906 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -215,15 +215,15 @@ jobs: fail-fast: false matrix: include: - # - name: benchmarks - # timeout: 20 - # test_dirs: "e2e_test/benchmarks" - # extra_deps: "genai-bench==0.0.3" - # env_vars: "" - # reruns: "" - # upload_benchmarks: true - # parallel_opts: "" # No parallel for benchmarks (performance measurement) - # ignore_opts: "--ignore=e2e_test/benchmarks/test_go_bindings_perf.py --ignore=e2e_test/benchmarks/test_nightly_perf.py" # Go and nightly benchmarks run in dedicated jobs + - name: benchmarks + timeout: 20 + test_dirs: "e2e_test/benchmarks" + extra_deps: "genai-bench==0.0.3" + env_vars: "" + reruns: "" + upload_benchmarks: true + parallel_opts: "" # No parallel for benchmarks (performance measurement) + ignore_opts: "--ignore=e2e_test/benchmarks/test_go_bindings_perf.py --ignore=e2e_test/benchmarks/test_nightly_perf.py" # Go and nightly benchmarks run in dedicated jobs - name: responses timeout: 25 test_dirs: "e2e_test/responses" @@ -234,56 +234,56 @@ jobs: setup_brave: true parallel_opts: "" # Cloud backend tests not compatible with parallel execution ignore_opts: "" - # - name: e2e - # timeout: 20 - # test_dirs: "e2e_test/router e2e_test/embeddings" - # # py is needed for pytest-parallel; sentence-transformers provides HuggingFace reference embeddings - # extra_deps: "pytest-parallel py sentence-transformers" - # env_vars: "SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" - # reruns: "--reruns 2 --reruns-delay 5" - # parallel_opts: "--workers 1 --tests-per-worker 4" # Thread-based parallelism - # ignore_opts: "" - # - name: chat-completions-sglang - # timeout: 20 - # test_dirs: "e2e_test/chat_completions" - # extra_deps: "pytest-parallel py" - # env_vars: "E2E_RUNTIME=sglang SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" - # reruns: "--reruns 2 --reruns-delay 5" - # parallel_opts: "--workers 1 --tests-per-worker 4" - # test_filter: "" - # ignore_opts: "" - # - name: chat-completions-vllm - # timeout: 20 - # test_dirs: "e2e_test/chat_completions" - # extra_deps: "pytest-parallel py" - # env_vars: "E2E_RUNTIME=vllm SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" - # reruns: "--reruns 2 --reruns-delay 5" - # parallel_opts: "--workers 1 --tests-per-worker 4" - # # TODO: Remove filter when vLLM supports logprobs and n>1 with greedy sampling - # # Excludes: 5-grpc (logprobs=5), 2-None-grpc (n=2 with no logprobs), multiple_choices (n=2 tests) - # test_filter: "-k 'not (5-grpc or 2-None-grpc or multiple_choices)'" - # setup_vllm: true - # ignore_opts: "" - # - name: vllm-pd - # timeout: 15 - # test_dirs: "e2e_test/router/test_pd_mmlu.py" - # extra_deps: "" - # env_vars: "E2E_RUNTIME=vllm SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" - # reruns: "--reruns 2 --reruns-delay 5" - # parallel_opts: "" - # test_filter: "" - # setup_vllm: true - # ignore_opts: "" - # - name: chat-completions-trtllm - # timeout: 25 - # test_dirs: "e2e_test/chat_completions" - # extra_deps: "pytest-parallel py" - # env_vars: "E2E_RUNTIME=trtllm SHOW_WORKER_LOGS=1 SHOW_ROUTER_LOGS=1" - # reruns: "--reruns 2 --reruns-delay 5" - # parallel_opts: "--workers 1 --tests-per-worker 4" - # test_filter: "" - # setup_trtllm: true - # ignore_opts: "" + - name: e2e + timeout: 20 + test_dirs: "e2e_test/router e2e_test/embeddings" + # py is needed for pytest-parallel; sentence-transformers provides HuggingFace reference embeddings + extra_deps: "pytest-parallel py sentence-transformers" + env_vars: "SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" + reruns: "--reruns 2 --reruns-delay 5" + parallel_opts: "--workers 1 --tests-per-worker 4" # Thread-based parallelism + ignore_opts: "" + - name: chat-completions-sglang + timeout: 20 + test_dirs: "e2e_test/chat_completions" + extra_deps: "pytest-parallel py" + env_vars: "E2E_RUNTIME=sglang SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" + reruns: "--reruns 2 --reruns-delay 5" + parallel_opts: "--workers 1 --tests-per-worker 4" + test_filter: "" + ignore_opts: "" + - name: chat-completions-vllm + timeout: 20 + test_dirs: "e2e_test/chat_completions" + extra_deps: "pytest-parallel py" + env_vars: "E2E_RUNTIME=vllm SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" + reruns: "--reruns 2 --reruns-delay 5" + parallel_opts: "--workers 1 --tests-per-worker 4" + # TODO: Remove filter when vLLM supports logprobs and n>1 with greedy sampling + # Excludes: 5-grpc (logprobs=5), 2-None-grpc (n=2 with no logprobs), multiple_choices (n=2 tests) + test_filter: "-k 'not (5-grpc or 2-None-grpc or multiple_choices)'" + setup_vllm: true + ignore_opts: "" + - name: vllm-pd + timeout: 15 + test_dirs: "e2e_test/router/test_pd_mmlu.py" + extra_deps: "" + env_vars: "E2E_RUNTIME=vllm SHOW_WORKER_LOGS=0 SHOW_ROUTER_LOGS=1" + reruns: "--reruns 2 --reruns-delay 5" + parallel_opts: "" + test_filter: "" + setup_vllm: true + ignore_opts: "" + - name: chat-completions-trtllm + timeout: 25 + test_dirs: "e2e_test/chat_completions" + extra_deps: "pytest-parallel py" + env_vars: "E2E_RUNTIME=trtllm SHOW_WORKER_LOGS=1 SHOW_ROUTER_LOGS=1" + reruns: "--reruns 2 --reruns-delay 5" + parallel_opts: "--workers 1 --tests-per-worker 4" + test_filter: "" + setup_trtllm: true + ignore_opts: "" runs-on: k8s-runner-gpu timeout-minutes: ${{ matrix.timeout }} steps: @@ -330,7 +330,7 @@ jobs: path: /tmp/oracle-xe-21-slim.tar key: docker-oracle-xe-21-slim - - name: Load or pull Oracle Docker image + - name: Start Oracle Database if: matrix.setup_oracle run: | if [ -f /tmp/oracle-xe-21-slim.tar ]; then @@ -342,10 +342,6 @@ jobs: echo "Saving Oracle image to cache..." docker save gvenzl/oracle-xe:21-slim -o /tmp/oracle-xe-21-slim.tar fi - - - name: Start Oracle Database - if: matrix.setup_oracle - run: | docker run -d -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim echo "Starting Oracle DB..." @@ -362,10 +358,12 @@ jobs: path: /tmp/brave-search-mcp-sse.tar key: docker-brave-search-mcp-sse-1.0.10 - - name: Load or pull Brave MCP Docker image + - name: Start Brave MCP Server if: matrix.setup_brave + env: + BRAVE_API_KEY: ${{ secrets.BRAVE_API_KEY }} run: | - if [ -f /tmp/brave-search-mcp-sse.tar ]; then + if [ -f /tmp/brave-search-mcp-sse.tar ]; then echo "Loading Brave MCP image from cache..." docker load -i /tmp/brave-search-mcp-sse.tar else @@ -374,12 +372,6 @@ jobs: echo "Saving Brave MCP image to cache..." docker save shoofio/brave-search-mcp-sse:1.0.10 -o /tmp/brave-search-mcp-sse.tar fi - - - name: Start Brave MCP Server - if: matrix.setup_brave - env: - BRAVE_API_KEY: ${{ secrets.BRAVE_API_KEY }} - run: | docker run -d \ -p 8001:8080 \ -e BRAVE_API_KEY \ From f1c6d5523ff428771c1898aa62bcdcce26bc2d45 Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 17:17:30 +0000 Subject: [PATCH 05/11] fix intendent --- .github/workflows/pr-test-rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index 92cbca1906..3a65460d36 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -363,7 +363,7 @@ jobs: env: BRAVE_API_KEY: ${{ secrets.BRAVE_API_KEY }} run: | - if [ -f /tmp/brave-search-mcp-sse.tar ]; then + if [ -f /tmp/brave-search-mcp-sse.tar ]; then echo "Loading Brave MCP image from cache..." docker load -i /tmp/brave-search-mcp-sse.tar else From 0fc7edd36429df94e810c53b5ffbe6c9939a4fda Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 17:45:48 +0000 Subject: [PATCH 06/11] remove docker clean step as k8s pod is ephemeral, everything destroyed after job end --- .github/workflows/pr-test-rust.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index 3a65460d36..92d512ef85 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -407,14 +407,6 @@ jobs: name: genai-bench-results-all-policies path: benchmark_**/ - - name: Cleanup Brave MCP Server - if: always() && matrix.setup_brave - run: docker kill brave-search-server || true; docker rm brave-search-server || true - - - name: Cleanup Oracle Database - if: always() && matrix.setup_oracle - run: docker kill oracle-db || true; docker rm oracle-db || true - go-unit-tests: name: go-unit-tests needs: [check-ci, build-wheel] From 712461af1b140dab7e629d93589e985420ad769e Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 18:43:48 +0000 Subject: [PATCH 07/11] update the cache key --- .github/workflows/pr-test-rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index 92d512ef85..f542612d91 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -328,7 +328,7 @@ jobs: uses: actions/cache@v5 with: path: /tmp/oracle-xe-21-slim.tar - key: docker-oracle-xe-21-slim + key: docker-oracle-xe - name: Start Oracle Database if: matrix.setup_oracle From 50662f8425a60c4f95176c78df400db35ddcf6d7 Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 20:18:12 +0000 Subject: [PATCH 08/11] use fast start image --- .github/workflows/pr-test-rust.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index f542612d91..cb9be6ebc2 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -327,22 +327,22 @@ jobs: id: cache-oracle-image uses: actions/cache@v5 with: - path: /tmp/oracle-xe-21-slim.tar - key: docker-oracle-xe + path: /tmp/oracle-xe-21-slim-faststart.tar + key: docker-oracle-xe-21-slim-faststart - name: Start Oracle Database if: matrix.setup_oracle run: | - if [ -f /tmp/oracle-xe-21-slim.tar ]; then + if [ -f /tmp/oracle-xe-21-slim-faststart.tar ]; then echo "Loading Oracle image from cache..." - docker load -i /tmp/oracle-xe-21-slim.tar + docker load -i /tmp/oracle-xe-21-slim-faststart.tar else echo "Pulling Oracle image from Docker Hub..." - docker pull gvenzl/oracle-xe:21-slim + docker pull gvenzl/oracle-xe:21-slim-faststart echo "Saving Oracle image to cache..." - docker save gvenzl/oracle-xe:21-slim -o /tmp/oracle-xe-21-slim.tar + docker save gvenzl/oracle-xe:21-slim-faststart -o /tmp/oracle-xe-21-slim-faststart.tar fi - docker run -d -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim + docker run -d -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim-faststart echo "Starting Oracle DB..." # Export Oracle connection environment variables From c81f8bb28c095985ab3ec7f1f5da469331960e94 Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 21:19:50 +0000 Subject: [PATCH 09/11] test --- .github/workflows/pr-test-rust.yml | 38 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index cb9be6ebc2..141c8e27de 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -330,25 +330,25 @@ jobs: path: /tmp/oracle-xe-21-slim-faststart.tar key: docker-oracle-xe-21-slim-faststart - - name: Start Oracle Database - if: matrix.setup_oracle - run: | - if [ -f /tmp/oracle-xe-21-slim-faststart.tar ]; then - echo "Loading Oracle image from cache..." - docker load -i /tmp/oracle-xe-21-slim-faststart.tar - else - echo "Pulling Oracle image from Docker Hub..." - docker pull gvenzl/oracle-xe:21-slim-faststart - echo "Saving Oracle image to cache..." - docker save gvenzl/oracle-xe:21-slim-faststart -o /tmp/oracle-xe-21-slim-faststart.tar - fi - docker run -d -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim-faststart - echo "Starting Oracle DB..." - - # Export Oracle connection environment variables - echo "ATP_USER=system" >> $GITHUB_ENV - echo "ATP_PASSWORD=oracle" >> $GITHUB_ENV - echo "ATP_DSN=localhost:1521/XEPDB1" >> $GITHUB_ENV + # - name: Start Oracle Database + # if: matrix.setup_oracle + # run: | + # if [ -f /tmp/oracle-xe-21-slim-faststart.tar ]; then + # echo "Loading Oracle image from cache..." + # docker load -i /tmp/oracle-xe-21-slim-faststart.tar + # else + # echo "Pulling Oracle image from Docker Hub..." + # docker pull gvenzl/oracle-xe:21-slim-faststart + # echo "Saving Oracle image to cache..." + # docker save gvenzl/oracle-xe:21-slim-faststart -o /tmp/oracle-xe-21-slim-faststart.tar + # fi + # docker run -d -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim-faststart + # echo "Starting Oracle DB..." + + # # Export Oracle connection environment variables + # echo "ATP_USER=system" >> $GITHUB_ENV + # echo "ATP_PASSWORD=oracle" >> $GITHUB_ENV + # echo "ATP_DSN=localhost:1521/XEPDB1" >> $GITHUB_ENV - name: Cache Brave MCP Docker image if: matrix.setup_brave From 388ac0ffb5a2bfb8b1d60ea68d0991f6cd970662 Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 21:51:52 +0000 Subject: [PATCH 10/11] warm up docker daemon --- .github/workflows/pr-test-rust.yml | 81 +++++++++--------------------- 1 file changed, 25 insertions(+), 56 deletions(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index 141c8e27de..e47edea6ff 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -290,6 +290,10 @@ jobs: - name: Checkout code uses: actions/checkout@v6 + - name: Warm up Docker daemon + if: matrix.setup_oracle || matrix.setup_brave + run: docker info > /dev/null 2>&1 + - name: Setup vLLM backend if: matrix.setup_vllm uses: ./.github/actions/setup-vllm @@ -301,7 +305,18 @@ jobs: - name: Setup SGLang backend if: ${{ !matrix.setup_vllm && !matrix.setup_trtllm }} uses: ./.github/actions/setup-sglang + + - name: Download wheel artifact + uses: actions/download-artifact@v7 + with: + name: smg-wheel + path: wheel/ + - name: Install wheel and test dependencies + run: | + pip uninstall -y smg || true + pip install wheel/*.whl + bash scripts/ci_install_e2e_deps.sh ${{ matrix.extra_deps }} - name: Setup Oracle Instant Client if: matrix.setup_oracle run: | @@ -322,57 +337,23 @@ jobs: echo "LD_LIBRARY_PATH=$HOME/instant-client/instantclient_23_9:$LD_LIBRARY_PATH" >> $GITHUB_ENV - - name: Cache Oracle Docker image + - name: Start Oracle Database if: matrix.setup_oracle - id: cache-oracle-image - uses: actions/cache@v5 - with: - path: /tmp/oracle-xe-21-slim-faststart.tar - key: docker-oracle-xe-21-slim-faststart - - # - name: Start Oracle Database - # if: matrix.setup_oracle - # run: | - # if [ -f /tmp/oracle-xe-21-slim-faststart.tar ]; then - # echo "Loading Oracle image from cache..." - # docker load -i /tmp/oracle-xe-21-slim-faststart.tar - # else - # echo "Pulling Oracle image from Docker Hub..." - # docker pull gvenzl/oracle-xe:21-slim-faststart - # echo "Saving Oracle image to cache..." - # docker save gvenzl/oracle-xe:21-slim-faststart -o /tmp/oracle-xe-21-slim-faststart.tar - # fi - # docker run -d -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim-faststart - # echo "Starting Oracle DB..." - - # # Export Oracle connection environment variables - # echo "ATP_USER=system" >> $GITHUB_ENV - # echo "ATP_PASSWORD=oracle" >> $GITHUB_ENV - # echo "ATP_DSN=localhost:1521/XEPDB1" >> $GITHUB_ENV - - - name: Cache Brave MCP Docker image - if: matrix.setup_brave - id: cache-brave-image - uses: actions/cache@v5 - with: - path: /tmp/brave-search-mcp-sse.tar - key: docker-brave-search-mcp-sse-1.0.10 + run: | + docker run --rm -d -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim-faststart + echo "Starting Oracle DB..." + + # Export Oracle connection environment variables + echo "ATP_USER=system" >> $GITHUB_ENV + echo "ATP_PASSWORD=oracle" >> $GITHUB_ENV + echo "ATP_DSN=localhost:1521/XEPDB1" >> $GITHUB_ENV - name: Start Brave MCP Server if: matrix.setup_brave env: BRAVE_API_KEY: ${{ secrets.BRAVE_API_KEY }} run: | - if [ -f /tmp/brave-search-mcp-sse.tar ]; then - echo "Loading Brave MCP image from cache..." - docker load -i /tmp/brave-search-mcp-sse.tar - else - echo "Pulling Brave MCP image from Docker Hub..." - docker pull shoofio/brave-search-mcp-sse:1.0.10 - echo "Saving Brave MCP image to cache..." - docker save shoofio/brave-search-mcp-sse:1.0.10 -o /tmp/brave-search-mcp-sse.tar - fi - docker run -d \ + docker run --rm -d \ -p 8001:8080 \ -e BRAVE_API_KEY \ --name brave-search-server \ @@ -381,18 +362,6 @@ jobs: sleep 2 curl -f --max-time 1 http://localhost:8001/sse > /dev/null 2>&1 && echo "Brave MCP Server is healthy!" || echo "Brave MCP Server responded" - - name: Download wheel artifact - uses: actions/download-artifact@v7 - with: - name: smg-wheel - path: wheel/ - - - name: Install wheel and test dependencies - run: | - pip uninstall -y smg || true - pip install wheel/*.whl - bash scripts/ci_install_e2e_deps.sh ${{ matrix.extra_deps }} - - name: Run E2E tests env: HF_TOKEN: ${{ secrets.HF_TOKEN }} From d158eff5611681142f1abc20a39c4293dfb69b40 Mon Sep 17 00:00:00 2001 From: key4ng Date: Fri, 6 Feb 2026 22:28:31 +0000 Subject: [PATCH 11/11] lint --- .github/workflows/pr-test-rust.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index e47edea6ff..fd969512f9 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -317,6 +317,7 @@ jobs: pip uninstall -y smg || true pip install wheel/*.whl bash scripts/ci_install_e2e_deps.sh ${{ matrix.extra_deps }} + - name: Setup Oracle Instant Client if: matrix.setup_oracle run: | @@ -340,7 +341,7 @@ jobs: - name: Start Oracle Database if: matrix.setup_oracle run: | - docker run --rm -d -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim-faststart + docker run -d --rm -p 1521:1521 -e ORACLE_PASSWORD=oracle --name oracle-db gvenzl/oracle-xe:21-slim-faststart echo "Starting Oracle DB..." # Export Oracle connection environment variables @@ -353,7 +354,7 @@ jobs: env: BRAVE_API_KEY: ${{ secrets.BRAVE_API_KEY }} run: | - docker run --rm -d \ + docker run -d --rm \ -p 8001:8080 \ -e BRAVE_API_KEY \ --name brave-search-server \