From c9b08b75600d2b76ba7d03f8230d6115d4ff0e18 Mon Sep 17 00:00:00 2001 From: Zhichang Yu Date: Tue, 28 Oct 2025 12:07:42 +0800 Subject: [PATCH] Customize service ports in tests.yml (#10834) ### What problem does this PR solve? Customize service ports in tests.yml ### Type of change - [x] Other (please describe): CI --- .github/workflows/tests.yml | 57 +++++++++++++++++++++++++++++++------ docker/.env | 2 +- docker/docker-compose.yml | 16 ++++------- 3 files changed, 55 insertions(+), 20 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f0a07a857..d7d7378bd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -106,16 +106,60 @@ jobs: - name: Start ragflow:nightly run: | - echo -e "\nCOMPOSE_PROFILES=\${COMPOSE_PROFILES},tei-cpu" >> docker/.env - echo -e "\nTEI_MODEL=BAAI/bge-small-en-v1.5" >> docker/.env - echo -e "\nRAGFLOW_IMAGE=infiniflow/ragflow:nightly" >> docker/.env + # Determine runner number (default to 1 if not found) + RUNNER_NUM=$(sudo docker inspect $(hostname) --format '{{index .Config.Labels "com.docker.compose.container-number"}}' 2>/dev/null || true) + RUNNER_NUM=${RUNNER_NUM:-1} + + # Compute port numbers using bash arithmetic + ES_PORT=$((1200 + RUNNER_NUM * 10)) + OS_PORT=$((1201 + RUNNER_NUM * 10)) + INFINITY_THRIFT_PORT=$((23817 + RUNNER_NUM * 10)) + INFINITY_HTTP_PORT=$((23820 + RUNNER_NUM * 10)) + INFINITY_PSQL_PORT=$((5432 + RUNNER_NUM * 10)) + MYSQL_PORT=$((5455 + RUNNER_NUM * 10)) + MINIO_PORT=$((9000 + RUNNER_NUM * 10)) + MINIO_CONSOLE_PORT=$((9001 + RUNNER_NUM * 10)) + REDIS_PORT=$((6379 + RUNNER_NUM * 10)) + TEI_PORT=$((6380 + RUNNER_NUM * 10)) + KIBANA_PORT=$((6601 + RUNNER_NUM * 10)) + SVR_HTTP_PORT=$((9380 + RUNNER_NUM * 10)) + ADMIN_SVR_HTTP_PORT=$((9381 + RUNNER_NUM * 10)) + SVR_MCP_PORT=$((9382 + RUNNER_NUM * 10)) + SANDBOX_EXECUTOR_MANAGER_PORT=$((9385 + RUNNER_NUM * 10)) + SVR_WEB_HTTP_PORT=$((80 + RUNNER_NUM * 10)) + SVR_WEB_HTTPS_PORT=$((443 + RUNNER_NUM * 10)) + + # Persist computed ports into docker/.env so docker-compose uses the correct host bindings + echo "" >> docker/.env + echo -e "ES_PORT=${ES_PORT}" >> docker/.env + echo -e "OS_PORT=${OS_PORT}" >> docker/.env + echo -e "INFINITY_THRIFT_PORT=${INFINITY_THRIFT_PORT}" >> docker/.env + echo -e "INFINITY_HTTP_PORT=${INFINITY_HTTP_PORT}" >> docker/.env + echo -e "INFINITY_PSQL_PORT=${INFINITY_PSQL_PORT}" >> docker/.env + echo -e "MYSQL_PORT=${MYSQL_PORT}" >> docker/.env + echo -e "MINIO_PORT=${MINIO_PORT}" >> docker/.env + echo -e "MINIO_CONSOLE_PORT=${MINIO_CONSOLE_PORT}" >> docker/.env + echo -e "REDIS_PORT=${REDIS_PORT}" >> docker/.env + echo -e "TEI_PORT=${TEI_PORT}" >> docker/.env + echo -e "KIBANA_PORT=${KIBANA_PORT}" >> docker/.env + echo -e "SVR_HTTP_PORT=${SVR_HTTP_PORT}" >> docker/.env + echo -e "ADMIN_SVR_HTTP_PORT=${ADMIN_SVR_HTTP_PORT}" >> docker/.env + echo -e "SVR_MCP_PORT=${SVR_MCP_PORT}" >> docker/.env + echo -e "SANDBOX_EXECUTOR_MANAGER_PORT=${SANDBOX_EXECUTOR_MANAGER_PORT}" >> docker/.env + echo -e "SVR_WEB_HTTP_PORT=${SVR_WEB_HTTP_PORT}" >> docker/.env + echo -e "SVR_WEB_HTTPS_PORT=${SVR_WEB_HTTPS_PORT}" >> docker/.env + + echo -e "COMPOSE_PROFILES=\${COMPOSE_PROFILES},tei-cpu" >> docker/.env + echo -e "TEI_MODEL=BAAI/bge-small-en-v1.5" >> docker/.env + echo -e "RAGFLOW_IMAGE=infiniflow/ragflow:nightly" >> docker/.env + echo "HOST_ADDRESS=http://host.docker.internal:${SVR_HTTP_PORT}" >> $GITHUB_ENV + sudo docker compose -f docker/docker-compose.yml -p ${GITHUB_RUN_ID} up -d uv sync --python 3.10 --only-group test --no-default-groups --frozen && uv pip install sdk/python - name: Run sdk tests against Elasticsearch run: | export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY="" - export HOST_ADDRESS=http://host.docker.internal:9380 until sudo docker exec ${RAGFLOW_CONTAINER} curl -s --connect-timeout 5 ${HOST_ADDRESS} > /dev/null; do echo "Waiting for service to be available..." sleep 5 @@ -125,7 +169,6 @@ jobs: - name: Run frontend api tests against Elasticsearch run: | export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY="" - export HOST_ADDRESS=http://host.docker.internal:9380 until sudo docker exec ${RAGFLOW_CONTAINER} curl -s --connect-timeout 5 ${HOST_ADDRESS} > /dev/null; do echo "Waiting for service to be available..." sleep 5 @@ -135,7 +178,6 @@ jobs: - name: Run http api tests against Elasticsearch run: | export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY="" - export HOST_ADDRESS=http://host.docker.internal:9380 until sudo docker exec ${RAGFLOW_CONTAINER} curl -s --connect-timeout 5 ${HOST_ADDRESS} > /dev/null; do echo "Waiting for service to be available..." sleep 5 @@ -155,7 +197,6 @@ jobs: - name: Run sdk tests against Infinity run: | export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY="" - export HOST_ADDRESS=http://host.docker.internal:9380 until sudo docker exec ${RAGFLOW_CONTAINER} curl -s --connect-timeout 5 ${HOST_ADDRESS} > /dev/null; do echo "Waiting for service to be available..." sleep 5 @@ -165,7 +206,6 @@ jobs: - name: Run frontend api tests against Infinity run: | export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY="" - export HOST_ADDRESS=http://host.docker.internal:9380 until sudo docker exec ${RAGFLOW_CONTAINER} curl -s --connect-timeout 5 ${HOST_ADDRESS} > /dev/null; do echo "Waiting for service to be available..." sleep 5 @@ -175,7 +215,6 @@ jobs: - name: Run http api tests against Infinity run: | export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY="" - export HOST_ADDRESS=http://host.docker.internal:9380 until sudo docker exec ${RAGFLOW_CONTAINER} curl -s --connect-timeout 5 ${HOST_ADDRESS} > /dev/null; do echo "Waiting for service to be available..." sleep 5 diff --git a/docker/.env b/docker/.env index 79ba2b95d..9e2025ef9 100644 --- a/docker/.env +++ b/docker/.env @@ -221,4 +221,4 @@ REGISTER_ENABLED=1 # - For OpenSearch: # COMPOSE_PROFILES=opensearch,sandbox USE_DOCLING=false -USE_MINERU=false \ No newline at end of file +USE_MINERU=false diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index d7796c143..ce9823a69 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -29,13 +29,11 @@ services: # command: # - --enable-adminserver ports: + - ${SVR_WEB_HTTP_PORT}:80 + - ${SVR_WEB_HTTPS_PORT}:443 - ${SVR_HTTP_PORT}:9380 - ${ADMIN_SVR_HTTP_PORT}:9381 - - 80:80 - - 443:443 - - 5678:5678 - - 5679:5679 - - 9382:9382 # entry for MCP (host_port:docker_port). The docker_port must match the value you set for `mcp-port` above. + - ${SVR_MCP_PORT}:9382 # entry for MCP (host_port:docker_port). The docker_port must match the value you set for `mcp-port` above. volumes: - ./ragflow-logs:/ragflow/logs - ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf @@ -80,13 +78,11 @@ services: # command: # - --enable-adminserver ports: + - ${SVR_WEB_HTTP_PORT}:80 + - ${SVR_WEB_HTTPS_PORT}:443 - ${SVR_HTTP_PORT}:9380 - ${ADMIN_SVR_HTTP_PORT}:9381 - - 80:80 - - 443:443 - - 5678:5678 - - 5679:5679 - - 9382:9382 # entry for MCP (host_port:docker_port). The docker_port must match the value you set for `mcp-port` above. + - ${SVR_MCP_PORT}:9382 # entry for MCP (host_port:docker_port). The docker_port must match the value you set for `mcp-port` above. volumes: - ./ragflow-logs:/ragflow/logs - ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf