enhance: docker-compose first then try to use docker compose (#35227)

https://github.com/milvus-io/milvus/issues/35209
https://github.com/milvus-io/milvus/pull/35208

---------

Signed-off-by: Yellow Shine <sammy.huang@zilliz.com>
This commit is contained in:
yellow-shine 2024-08-02 19:37:09 +08:00 committed by GitHub
parent 58f7c35b75
commit 3a997e8056
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 117 additions and 97 deletions

View File

@ -102,9 +102,9 @@ jobs:
wget https://github.com/milvus-io/milvus/releases/download/${{ env.PREVIOUS_RELEASE_VERSION }}/milvus-${{ matrix.mode }}-docker-compose.yml -O docker-compose.yml; wget https://github.com/milvus-io/milvus/releases/download/${{ env.PREVIOUS_RELEASE_VERSION }}/milvus-${{ matrix.mode }}-docker-compose.yml -O docker-compose.yml;
replace_image_tag ${{ env.OLD_IMAGE_REPO }} ${{ env.OLD_IMAGE_TAG }}; replace_image_tag ${{ env.OLD_IMAGE_REPO }} ${{ env.OLD_IMAGE_TAG }};
fi fi
docker-compose up -d docker compose up -d
bash ../check_healthy.sh bash ../check_healthy.sh
docker-compose ps -a docker compose ps -a
sleep 10s sleep 10s
- name: Run first test - name: Run first test
timeout-minutes: 15 timeout-minutes: 15
@ -130,7 +130,7 @@ jobs:
shell: bash shell: bash
working-directory: tests/python_client/deploy/${{ matrix.mode }} working-directory: tests/python_client/deploy/${{ matrix.mode }}
run: | run: |
docker-compose ps -a || true docker compose ps -a || true
mkdir -p logs/first_deploy mkdir -p logs/first_deploy
bash ../../../scripts/export_log_docker.sh ./logs/first_deploy || echo "export logs failed" bash ../../../scripts/export_log_docker.sh ./logs/first_deploy || echo "export logs failed"
- name: Second Milvus deployment - name: Second Milvus deployment
@ -140,15 +140,15 @@ jobs:
run: | run: |
source ../utils.sh source ../utils.sh
if [ ${{ matrix.task }} == "reinstall" ]; then if [ ${{ matrix.task }} == "reinstall" ]; then
docker-compose restart docker compose restart
fi fi
if [ ${{ matrix.task }} == "upgrade" ]; then if [ ${{ matrix.task }} == "upgrade" ]; then
wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/${{ matrix.mode }}/docker-compose.yml -O docker-compose.yml; wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/${{ matrix.mode }}/docker-compose.yml -O docker-compose.yml;
replace_image_tag ${{ env.NEW_IMAGE_REPO }} ${{ env.NEW_IMAGE_TAG }}; replace_image_tag ${{ env.NEW_IMAGE_REPO }} ${{ env.NEW_IMAGE_TAG }};
docker-compose up -d; docker compose up -d;
fi fi
bash ../check_healthy.sh bash ../check_healthy.sh
docker-compose ps -a docker compose ps -a
echo "sleep 120s for the second deployment to be ready" echo "sleep 120s for the second deployment to be ready"
sleep 120s sleep 120s
@ -169,7 +169,7 @@ jobs:
shell: bash shell: bash
working-directory: tests/python_client/deploy/${{ matrix.mode }} working-directory: tests/python_client/deploy/${{ matrix.mode }}
run: | run: |
docker-compose ps -a || true docker compose ps -a || true
mkdir -p logs/second_deploy mkdir -p logs/second_deploy
bash ../../../scripts/export_log_docker.sh ./logs/second_deploy || echo "export logs failed" bash ../../../scripts/export_log_docker.sh ./logs/second_deploy || echo "export logs failed"
@ -181,9 +181,9 @@ jobs:
echo "restart docker service" echo "restart docker service"
sudo systemctl restart docker sudo systemctl restart docker
sleep 20s sleep 20s
docker-compose up -d docker compose up -d
bash ../check_healthy.sh bash ../check_healthy.sh
docker-compose ps -a docker compose ps -a
echo "sleep 120s for the deployment to be ready after docker restart" echo "sleep 120s for the deployment to be ready after docker restart"
sleep 120s sleep 120s
@ -206,7 +206,7 @@ jobs:
shell: bash shell: bash
working-directory: tests/python_client/deploy/${{ matrix.mode }} working-directory: tests/python_client/deploy/${{ matrix.mode }}
run: | run: |
docker-compose ps -a || true docker compose ps -a || true
mkdir -p logs/second_deploy mkdir -p logs/second_deploy
bash ../../../scripts/export_log_docker.sh ./logs/third_deploy || echo "export logs failed" bash ../../../scripts/export_log_docker.sh ./logs/third_deploy || echo "export logs failed"

View File

@ -141,7 +141,7 @@ jobs:
- name: Start Service - name: Start Service
shell: bash shell: bash
run: | run: |
docker-compose up -d azurite docker compose up -d azurite
- name: UT - name: UT
run: | run: |
chmod +x build/builder.sh chmod +x build/builder.sh
@ -193,7 +193,7 @@ jobs:
- name: Start Service - name: Start Service
shell: bash shell: bash
run: | run: |
docker-compose up -d pulsar etcd minio azurite docker compose up -d pulsar etcd minio azurite
- name: UT - name: UT
run: | run: |
chmod +x build/builder.sh chmod +x build/builder.sh
@ -245,7 +245,7 @@ jobs:
- name: Start Service - name: Start Service
shell: bash shell: bash
run: | run: |
docker-compose up -d pulsar etcd minio docker compose up -d pulsar etcd minio
- name: IntegrationTest - name: IntegrationTest
run: | run: |
chmod +x build/builder.sh chmod +x build/builder.sh

View File

@ -39,14 +39,14 @@ jobs:
shell: bash shell: bash
working-directory: tests/docker working-directory: tests/docker
run: | run: |
docker-compose pull --ignore-pull-failures pytest docker compose pull pytest
- name: Docker Build - name: Docker Build
shell: bash shell: bash
working-directory: tests/docker working-directory: tests/docker
run: | run: |
IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} docker-compose build pytest IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} docker compose build pytest
export LATEST_IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} export LATEST_IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }}
IMAGE_TAG=latest docker-compose build pytest IMAGE_TAG=latest docker compose build pytest
- name: Docker Push - name: Docker Push
if: success() && github.event_name == 'push' && github.repository == 'milvus-io/milvus' if: success() && github.event_name == 'push' && github.repository == 'milvus-io/milvus'
continue-on-error: true continue-on-error: true
@ -55,8 +55,8 @@ jobs:
run: | run: |
docker login -u ${{ secrets.DOCKERHUB_USER }} \ docker login -u ${{ secrets.DOCKERHUB_USER }} \
-p ${{ secrets.DOCKERHUB_TOKEN }} -p ${{ secrets.DOCKERHUB_TOKEN }}
IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} docker-compose push pytest IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} docker compose push pytest
IMAGE_TAG=latest docker-compose push pytest IMAGE_TAG=latest docker compose push pytest
echo "Push pytest image Succeeded" echo "Push pytest image Succeeded"
- name: Update Pytest Image Changes - name: Update Pytest Image Changes
if: success() && github.event_name == 'push' && github.repository == 'milvus-io/milvus' if: success() && github.event_name == 'push' && github.repository == 'milvus-io/milvus'

View File

@ -383,7 +383,7 @@ For Apple Silicon users (Apple M1):
```shell ```shell
$ cd deployments/docker/dev $ cd deployments/docker/dev
$ docker-compose -f docker-compose-apple-silicon.yml up -d $ docker compose -f docker-compose-apple-silicon.yml up -d
$ cd ../../../ $ cd ../../../
$ make unittest $ make unittest
``` ```
@ -392,7 +392,7 @@ For others:
```shell ```shell
$ cd deployments/docker/dev $ cd deployments/docker/dev
$ docker-compose up -d $ docker compose up -d
$ cd ../../../ $ cd ../../../
$ make unittest $ make unittest
``` ```
@ -461,13 +461,13 @@ Milvus Cluster includes further component — Pulsar, to be distributed through
```shell ```shell
# Running Milvus cluster # Running Milvus cluster
$ cd deployments/docker/dev $ cd deployments/docker/dev
$ docker-compose up -d $ docker compose up -d
$ cd ../../../ $ cd ../../../
$ ./scripts/start_cluster.sh $ ./scripts/start_cluster.sh
# Or running Milvus standalone # Or running Milvus standalone
$ cd deployments/docker/dev $ cd deployments/docker/dev
$ docker-compose up -d $ docker compose up -d
$ cd ../../../ $ cd ../../../
$ ./scripts/start_standalone.sh $ ./scripts/start_standalone.sh
``` ```

View File

@ -95,7 +95,7 @@ Creating milvus_builder_1 ... done
Check running state of Dev Container: Check running state of Dev Container:
```shell ```shell
$ docker-compose -f docker-compose-devcontainer.yml ps $ docker compose -f docker-compose-devcontainer.yml ps
Name Command State Ports Name Command State Ports
--------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------
@ -135,7 +135,7 @@ Milvus uses Python SDK to write test cases to verify the correctness of Milvus f
```shell ```shell
cd deployments/docker/dev cd deployments/docker/dev
docker-compose up -d docker compose up -d
cd ../../../ cd ../../../
build/builder.sh /bin/bash -c "export ROCKSMQ_PATH='/tmp/milvus/rdb_data' && ./scripts/start_standalone.sh && cat" build/builder.sh /bin/bash -c "export ROCKSMQ_PATH='/tmp/milvus/rdb_data' && ./scripts/start_standalone.sh && cat"
``` ```
@ -149,9 +149,9 @@ build/builder.sh /bin/bash -c "./scripts/start_cluster.sh && cat"
To run E2E tests, use these commands: To run E2E tests, use these commands:
```shell ```shell
MILVUS_SERVICE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker-compose ps -q builder)) MILVUS_SERVICE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker compose ps -q builder))
cd tests/docker cd tests/docker
docker-compose run --rm pytest /bin/bash -c "pytest --host ${MILVUS_SERVICE_IP}" docker compose run --rm pytest /bin/bash -c "pytest --host ${MILVUS_SERVICE_IP}"
``` ```
## Basic Flow ## Basic Flow

View File

@ -2,6 +2,8 @@
set -eo pipefail set -eo pipefail
source ./build/util.sh
# Absolute path to the toplevel milvus directory. # Absolute path to the toplevel milvus directory.
toplevel=$(dirname "$(cd "$(dirname "${0}")"; pwd)") toplevel=$(dirname "$(cd "$(dirname "${0}")"; pwd)")
@ -18,12 +20,12 @@ fi
pushd "${toplevel}" pushd "${toplevel}"
if [[ "${1-}" == "pull" ]]; then if [[ "${1-}" == "pull" ]]; then
docker-compose pull --ignore-pull-failures builder $DOCKER_COMPOSE_COMMAND pull builder
exit 0 exit 0
fi fi
if [[ "${1-}" == "down" ]]; then if [[ "${1-}" == "down" ]]; then
docker-compose down $DOCKER_COMPOSE_COMMAND down
exit 0 exit 0
fi fi
@ -37,11 +39,11 @@ mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-vscode-ex
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-conan" mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-conan"
chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker}" chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker}"
docker-compose pull --ignore-pull-failures builder $DOCKER_COMPOSE_COMMAND pull builder
if [[ "${CHECK_BUILDER:-}" == "1" ]]; then if [[ "${CHECK_BUILDER:-}" == "1" ]]; then
docker-compose build builder $DOCKER_COMPOSE_COMMAND build builder
fi fi
docker-compose run --no-deps --rm builder "$@" $DOCKER_COMPOSE_COMMAND run --no-deps --rm builder "$@"
popd popd

View File

@ -2,6 +2,8 @@
set -euo pipefail set -euo pipefail
source ./build/util.sh
# Absolute path to the toplevel milvus directory. # Absolute path to the toplevel milvus directory.
toplevel=$(dirname "$(cd "$(dirname "${0}")"; pwd)") toplevel=$(dirname "$(cd "$(dirname "${0}")"; pwd)")
@ -14,12 +16,12 @@ export OS_NAME="${OS_NAME:-ubuntu22.04}"
pushd "${toplevel}" pushd "${toplevel}"
if [[ "${1-}" == "pull" ]]; then if [[ "${1-}" == "pull" ]]; then
docker-compose pull --ignore-pull-failures gpubuilder $DOCKER_COMPOSE_COMMAND pull gpubuilder
exit 0 exit 0
fi fi
if [[ "${1-}" == "down" ]]; then if [[ "${1-}" == "down" ]]; then
docker-compose down $DOCKER_COMPOSE_COMMAND down
exit 0 exit 0
fi fi
@ -42,15 +44,15 @@ mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-vscode-extens
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-conan" mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-conan"
chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}" chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}"
docker-compose pull --ignore-pull-failures gpubuilder docker compose pull gpubuilder
if [[ "${CHECK_BUILDER:-}" == "1" ]]; then if [[ "${CHECK_BUILDER:-}" == "1" ]]; then
docker-compose build gpubuilder $DOCKER_COMPOSE_COMMAND build gpubuilder
fi fi
if [[ "$(id -u)" != "0" ]]; then if [[ "$(id -u)" != "0" ]]; then
docker-compose run --no-deps --rm -u "$uid:$gid" gpubuilder "$@" $DOCKER_COMPOSE_COMMAND run --no-deps --rm -u "$uid:$gid" gpubuilder "$@"
else else
docker-compose run --no-deps --rm gpubuilder "$@" $DOCKER_COMPOSE_COMMAND run --no-deps --rm gpubuilder "$@"
fi fi
popd popd

14
build/util.sh Normal file
View File

@ -0,0 +1,14 @@
# Function to check if a command exists
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# Check if docker-compose exists
if command_exists docker-compose; then
echo "Using docker-compose"
DOCKER_COMPOSE_COMMAND="docker-compose"
else
echo "Using docker compose"
DOCKER_COMPOSE_COMMAND="docker compose"
fi

View File

@ -8,7 +8,7 @@ For better tracking and debugging Milvus, the script `export-milvus-log.sh` is p
> >
>For milvus installed with helm-chart, if `log.persistence.enabled` is set to true (default false), the tool cannot be used to export milvus logs and the log files can be found directly under the path specified by `log.persistence.mountPath`. >For milvus installed with helm-chart, if `log.persistence.enabled` is set to true (default false), the tool cannot be used to export milvus logs and the log files can be found directly under the path specified by `log.persistence.mountPath`.
> >
> For Milvus installed with docker-compose, you can use `docker-compose logs > milvus.log` to export the logs. > For Milvus installed with docker-compose, you can use `docker compose logs > milvus.log` to export the logs.
## Parameter Description ## Parameter Description

View File

@ -71,7 +71,7 @@ $ for image in $(find . -type f -wholename "./images/*.tar.gz") ; do gunzip -c $
### With Docker Compose ### With Docker Compose
```shell ```shell
$ docker-compose -f docker-compose.yml up -d $ docker compose -f docker-compose.yml up -d
``` ```
### On Kubernetes ### On Kubernetes
@ -85,7 +85,7 @@ $ kubectl apply -f milvus_manifest.yaml
### With Docker Compose ### With Docker Compose
```shell ```shell
$ docker-compose -f docker-compose.yml down $ docker compose -f docker-compose.yml down
``` ```
### On Kubernetes ### On Kubernetes

View File

@ -59,6 +59,7 @@ $ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docke
$ sudo chmod +x /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose $ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version $ docker-compose --version
$ docker compose --version
``` ```
## Start service ## Start service
@ -68,6 +69,7 @@ Start third-party service:
```shell ```shell
$ cd [milvus project path]/deployments/docker/cluster $ cd [milvus project path]/deployments/docker/cluster
$ docker-compose up -d $ docker-compose up -d
$ docker compose up -d
``` ```
Start milvus cluster: Start milvus cluster:

View File

@ -75,20 +75,20 @@ mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-conan"
chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker}" chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker}"
if [ "${1-}" = "build" ];then if [ "${1-}" = "build" ];then
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml pull --ignore-pull-failures builder docker compose -f $ROOT_DIR/docker-compose-devcontainer.yml pull builder
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml build builder docker compose -f $ROOT_DIR/docker-compose-devcontainer.yml build builder
fi fi
if [ "${1-}" = "up" ]; then if [ "${1-}" = "up" ]; then
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml up -d $(docker-compose config --services | grep -wv "gpubuilder") docker compose -f $ROOT_DIR/docker-compose-devcontainer.yml up -d $(docker compose config --services | grep -wv "gpubuilder")
fi fi
if [ "${1-}" = "down" ]; then if [ "${1-}" = "down" ]; then
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml down docker compose -f $ROOT_DIR/docker-compose-devcontainer.yml down
fi fi
if [ "${1-}" = "gpu" -a "${2-}" = "up" ]; then if [ "${1-}" = "gpu" -a "${2-}" = "up" ]; then
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml up -d $(docker-compose config --services | grep -wv "builder") docker compose -f $ROOT_DIR/docker-compose-devcontainer.yml up -d $(docker compose config --services | grep -wv "builder")
fi fi
popd popd

View File

@ -17,28 +17,28 @@
cd ../build/docker/deploy/ cd ../build/docker/deploy/
echo "starting rootcoord docker" echo "starting rootcoord docker"
nohup docker-compose -p milvus up rootcoord > ~/rootcoord_docker.log 2>&1 & nohup docker compose -p milvus up rootcoord > ~/rootcoord_docker.log 2>&1 &
echo "starting proxy docker" echo "starting proxy docker"
nohup docker-compose -p milvus up proxy > ~/proxy_docker.log 2>&1 & nohup docker compose -p milvus up proxy > ~/proxy_docker.log 2>&1 &
echo "starting indexcoord docker" echo "starting indexcoord docker"
nohup docker-compose -p milvus up indexcoord > ~/indexcoord_docker.log 2>&1 & nohup docker compose -p milvus up indexcoord > ~/indexcoord_docker.log 2>&1 &
echo "starting indexnode docker" echo "starting indexnode docker"
nohup docker-compose -p milvus up indexnode > ~/indexnode_docker.log 2>&1 & nohup docker compose -p milvus up indexnode > ~/indexnode_docker.log 2>&1 &
echo "starting querycoord docker" echo "starting querycoord docker"
nohup docker-compose -p milvus up querycoord > ~/querycoord_docker.log 2>&1 & nohup docker compose -p milvus up querycoord > ~/querycoord_docker.log 2>&1 &
echo "starting datacoord docker" echo "starting datacoord docker"
nohup docker-compose -p milvus up datacoord > ~/datacoord_docker.log 2>&1 & nohup docker compose -p milvus up datacoord > ~/datacoord_docker.log 2>&1 &
echo "starting querynode1 docker" echo "starting querynode1 docker"
nohup docker-compose -p milvus run -e QUERY_NODE_ID=1 querynode > ~/querynode1_docker.log 2>&1 & nohup docker compose -p milvus run -e QUERY_NODE_ID=1 querynode > ~/querynode1_docker.log 2>&1 &
echo "starting querynode2 docker" echo "starting querynode2 docker"
nohup docker-compose -p milvus run -e QUERY_NODE_ID=2 querynode > ~/querynode2_docker.log 2>&1 & nohup docker compose -p milvus run -e QUERY_NODE_ID=2 querynode > ~/querynode2_docker.log 2>&1 &
echo "starting datanode docker" echo "starting datanode docker"
nohup docker-compose -p milvus run -e DATA_NODE_ID=3 datanode > ~/datanode_docker.log 2>&1 & nohup docker compose -p milvus run -e DATA_NODE_ID=3 datanode > ~/datanode_docker.log 2>&1 &

View File

@ -49,9 +49,9 @@ $ docker info
2. Check the version of Docker-Compose 2. Check the version of Docker-Compose
```shell ```shell
$ docker-compose version $ docker compose version
docker-compose version 1.25.5, build 8a1c60f6 docker compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0 docker-py version: 4.1.0
CPython version: 3.7.5 CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020 OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020

View File

@ -49,9 +49,9 @@ $ docker info
2. 确认 Docker Compose 版本 2. 确认 Docker Compose 版本
```shell ```shell
$ docker-compose version $ docker compose version
docker-compose version 1.25.5, build 8a1c60f6 docker compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0 docker-py version: 4.1.0
CPython version: 3.7.5 CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020 OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020

View File

@ -7,7 +7,7 @@ This folder contains the integration test for Milvus components.
Integration test still need some thirdparty components to start: Integration test still need some thirdparty components to start:
```bash ```bash
cd [milvus-folder]/deployments/docker/dev && docker-compose up -d cd [milvus-folder]/deployments/docker/dev && docker compose up -d
``` ```
Run following script to start the full integration test: Run following script to start the full integration test:

View File

@ -59,7 +59,7 @@ $ bash run.sh -p ${Password}
``` ```
## Integrate deploy test into CI ## Integrate deploy test into CI
Provides a way to periodically run docker-compose deployment tests through GitHub action[deploy-test](https://github.com/milvus-io/milvus/blob/master/.github/workflows/deploy-test.yaml) Provides a way to periodically run docker compose deployment tests through GitHub action[deploy-test](https://github.com/milvus-io/milvus/blob/master/.github/workflows/deploy-test.yaml)
- [x] Parallel testing for four deployment scenarios - [x] Parallel testing for four deployment scenarios
- [x] Upload logs to artifacts for further debug - [x] Upload logs to artifacts for further debug

View File

@ -4,8 +4,8 @@
function check_healthy { function check_healthy {
Expect=$(yq '.services | length' 'docker-compose.yml') Expect=$(yq '.services | length' 'docker-compose.yml')
Expect_health=$(yq '.services' 'docker-compose.yml' |grep 'healthcheck'|wc -l) Expect_health=$(yq '.services' 'docker-compose.yml' |grep 'healthcheck'|wc -l)
cnt=$(docker-compose ps | grep -E "running|Running|Up|up" | wc -l) cnt=$(docker compose ps | grep -E "running|Running|Up|up" | wc -l)
healthy=$(docker-compose ps | grep "healthy" | wc -l) healthy=$(docker compose ps | grep "healthy" | wc -l)
time_cnt=0 time_cnt=0
echo "running num $cnt expect num $Expect" echo "running num $cnt expect num $Expect"
echo "healthy num $healthy expect num $Expect_health" echo "healthy num $healthy expect num $Expect_health"
@ -20,8 +20,8 @@ function check_healthy {
printf "timeout,there are some issues with deployment!" printf "timeout,there are some issues with deployment!"
exit 1 exit 1
fi fi
cnt=$(docker-compose ps | grep -E "running|Running|Up|up" | wc -l) cnt=$(docker compose ps | grep -E "running|Running|Up|up" | wc -l)
healthy=$(docker-compose ps | grep "healthy" | wc -l) healthy=$(docker compose ps | grep "healthy" | wc -l)
echo "running num $cnt expect num $Expect" echo "running num $cnt expect num $Expect"
echo "healthy num $healthy expect num $Expect_health" echo "healthy num $healthy expect num $Expect_health"
done done

View File

@ -42,7 +42,7 @@ done
ROOT_FOLDER=$(cd "$(dirname "$0")";pwd) ROOT_FOLDER=$(cd "$(dirname "$0")";pwd)
# to export docker-compose logs before exit # to export docker compose logs before exit
function error_exit { function error_exit {
pushd ${ROOT_FOLDER}/${Deploy_Dir} pushd ${ROOT_FOLDER}/${Deploy_Dir}
echo "test failed" echo "test failed"
@ -51,8 +51,8 @@ function error_exit {
then then
mkdir logs mkdir logs
fi fi
docker-compose ps docker compose ps
docker-compose logs > ./logs/${Deploy_Dir}-${Task}-${current}.log 2>&1 docker compose logs > ./logs/${Deploy_Dir}-${Task}-${current}.log 2>&1
echo "log saved to $(pwd)/logs/${Deploy_Dir}-${Task}-${current}.log" echo "log saved to $(pwd)/logs/${Deploy_Dir}-${Task}-${current}.log"
popd popd
exit 1 exit 1
@ -75,8 +75,8 @@ function replace_image_tag {
#to check containers all running and minio is healthy #to check containers all running and minio is healthy
function check_healthy { function check_healthy {
cnt=$(docker-compose ps | grep -E "running|Running|Up|up" | wc -l) cnt=$(docker compose ps | grep -E "running|Running|Up|up" | wc -l)
healthy=$(docker-compose ps | grep "healthy" | wc -l) healthy=$(docker compose ps | grep "healthy" | wc -l)
time_cnt=0 time_cnt=0
echo "running num $cnt expect num $Expect" echo "running num $cnt expect num $Expect"
echo "healthy num $healthy expect num $Expect_health" echo "healthy num $healthy expect num $Expect_health"
@ -91,8 +91,8 @@ function check_healthy {
printf "timeout,there are some issue with deployment!" printf "timeout,there are some issue with deployment!"
error_exit error_exit
fi fi
cnt=$(docker-compose ps | grep -E "running|Running|Up|up" | wc -l) cnt=$(docker compose ps | grep -E "running|Running|Up|up" | wc -l)
healthy=$(docker-compose ps | grep "healthy" | wc -l) healthy=$(docker compose ps | grep "healthy" | wc -l)
echo "running num $cnt expect num $Expect" echo "running num $cnt expect num $Expect"
echo "healthy num $healthy expect num $Expect_health" echo "healthy num $healthy expect num $Expect_health"
done done
@ -129,14 +129,14 @@ pushd ${Deploy_Dir}
wget https://github.com/milvus-io/milvus/releases/download/${latest_rc_tag}/milvus-${Mode}-docker-compose.yml -O docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/${latest_rc_tag}/milvus-${Mode}-docker-compose.yml -O docker-compose.yml
ls ls
# clean env to deploy a fresh milvus # clean env to deploy a fresh milvus
docker-compose down docker compose down
docker-compose ps docker compose ps
echo "$pw"| sudo -S rm -rf ./volumes echo "$pw"| sudo -S rm -rf ./volumes
# first deployment # first deployment
if [ "$Task" == "reinstall" ]; if [ "$Task" == "reinstall" ];
then then
printf "download latest milvus docker-compose yaml file from github\n" printf "download latest milvus docker compose yaml file from github\n"
wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/${Mode}/docker-compose.yml -O docker-compose.yml wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/${Mode}/docker-compose.yml -O docker-compose.yml
printf "start to deploy latest rc tag milvus\n" printf "start to deploy latest rc tag milvus\n"
replace_image_tag "milvusdb\/milvus" $latest_tag replace_image_tag "milvusdb\/milvus" $latest_tag
@ -150,9 +150,9 @@ fi
cat docker-compose.yml|grep milvusdb cat docker-compose.yml|grep milvusdb
Expect=$(grep "container_name" docker-compose.yml | wc -l) Expect=$(grep "container_name" docker-compose.yml | wc -l)
Expect_health=$(grep "healthcheck" docker-compose.yml | wc -l) Expect_health=$(grep "healthcheck" docker-compose.yml | wc -l)
docker-compose up -d docker compose up -d
check_healthy check_healthy
docker-compose ps docker compose ps
popd popd
# test for first deployment # test for first deployment
@ -169,10 +169,10 @@ fi
pushd ${Deploy_Dir} pushd ${Deploy_Dir}
# uninstall milvus # uninstall milvus
printf "start to uninstall milvus\n" printf "start to uninstall milvus\n"
docker-compose down docker compose down
sleep 10 sleep 10
printf "check all containers removed\n" printf "check all containers removed\n"
docker-compose ps docker compose ps
# second deployment # second deployment
if [ "$Task" == "reinstall" ]; if [ "$Task" == "reinstall" ];
@ -184,16 +184,16 @@ if [ "$Task" == "upgrade" ];
then then
printf "start to upgrade milvus\n" printf "start to upgrade milvus\n"
# because the task is upgrade, so replace image tag to latest, like rc4-->rc5 # because the task is upgrade, so replace image tag to latest, like rc4-->rc5
printf "download latest milvus docker-compose yaml file from github\n" printf "download latest milvus docker compose yaml file from github\n"
wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/${Mode}/docker-compose.yml -O docker-compose.yml wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/${Mode}/docker-compose.yml -O docker-compose.yml
printf "start to deploy latest rc tag milvus\n" printf "start to deploy latest rc tag milvus\n"
replace_image_tag "milvusdb\/milvus" $latest_tag replace_image_tag "milvusdb\/milvus" $latest_tag
fi fi
cat docker-compose.yml|grep milvusdb cat docker-compose.yml|grep milvusdb
docker-compose up -d docker compose up -d
check_healthy check_healthy
docker-compose ps docker compose ps
popd popd
# wait for milvus ready # wait for milvus ready
@ -211,12 +211,12 @@ then
fi fi
# test for third deployment(after docker-compose restart) # test for third deployment(after docker compose restart)
pushd ${Deploy_Dir} pushd ${Deploy_Dir}
printf "start to restart milvus\n" printf "start to restart milvus\n"
docker-compose restart docker compose restart
check_healthy check_healthy
docker-compose ps docker compose ps
popd popd
# wait for milvus ready # wait for milvus ready
@ -234,9 +234,9 @@ fi
pushd ${Deploy_Dir} pushd ${Deploy_Dir}
# clean env # clean env
docker-compose ps docker compose ps
docker-compose down docker compose down
sleep 10 sleep 10
docker-compose ps docker compose ps
echo "$pw"|sudo -S rm -rf ./volumes echo "$pw"|sudo -S rm -rf ./volumes
popd popd

View File

@ -32,8 +32,8 @@ function replace_image_tag {
function check_healthy { function check_healthy {
Expect=$(yq '.services | length' 'docker-compose.yml') Expect=$(yq '.services | length' 'docker-compose.yml')
Expect_health=$(yq '.services' 'docker-compose.yml' |grep 'healthcheck'|wc -l) Expect_health=$(yq '.services' 'docker-compose.yml' |grep 'healthcheck'|wc -l)
cnt=$(docker-compose ps | grep -E "running|Running|Up|up" | wc -l) cnt=$(docker compose ps | grep -E "running|Running|Up|up" | wc -l)
healthy=$(docker-compose ps | grep "healthy" | wc -l) healthy=$(docker compose ps | grep "healthy" | wc -l)
time_cnt=0 time_cnt=0
echo "running num $cnt expect num $Expect" echo "running num $cnt expect num $Expect"
echo "healthy num $healthy expect num $Expect_health" echo "healthy num $healthy expect num $Expect_health"
@ -48,8 +48,8 @@ function check_healthy {
printf "timeout,there are some issues with deployment!" printf "timeout,there are some issues with deployment!"
exit 1 exit 1
fi fi
cnt=$(docker-compose ps | grep -E "running|Running|Up|up" | wc -l) cnt=$(docker compose ps | grep -E "running|Running|Up|up" | wc -l)
healthy=$(docker-compose ps | grep "healthy" | wc -l) healthy=$(docker compose ps | grep "healthy" | wc -l)
echo "running num $cnt expect num $Expect" echo "running num $cnt expect num $Expect"
echo "healthy num $healthy expect num $Expect_health" echo "healthy num $healthy expect num $Expect_health"
done done

View File

@ -80,12 +80,12 @@ fi
export MILVUS_SERVICE_PORT="${MILVUS_SERVICE_PORT:-19530}" export MILVUS_SERVICE_PORT="${MILVUS_SERVICE_PORT:-19530}"
if [[ "${MANUAL:-}" == "true" ]]; then if [[ "${MANUAL:-}" == "true" ]]; then
docker-compose up -d docker compose up -d
else else
if [[ "${MILVUS_CLIENT}" == "pymilvus" ]]; then if [[ "${MILVUS_CLIENT}" == "pymilvus" ]]; then
# Better to run pytest under pytest workspace # Better to run pytest under pytest workspace
export MILVUS_PYTEST_WORKSPACE="/milvus/tests/python_client" export MILVUS_PYTEST_WORKSPACE="/milvus/tests/python_client"
docker-compose run --rm pytest /bin/bash -c "pytest -n ${PARALLEL_NUM} --host ${MILVUS_SERVICE_IP} --port ${MILVUS_SERVICE_PORT} \ docker compose run --rm pytest /bin/bash -c "pytest -n ${PARALLEL_NUM} --host ${MILVUS_SERVICE_IP} --port ${MILVUS_SERVICE_PORT} \
--html=\${CI_LOG_PATH}/report.html --self-contained-html ${@:-}" --html=\${CI_LOG_PATH}/report.html --self-contained-html ${@:-}"
fi fi
fi fi

View File

@ -4,7 +4,7 @@
set -e set -e
log_dir=${1:-"logs"} log_dir=${1:-"logs"}
array=($(docker-compose ps -a|awk 'NR == 1 {next} {print $1}')) array=($(docker compose ps -a|awk 'NR == 1 {next} {print $1}'))
echo ${array[@]} echo ${array[@]}
if [ ! -d $log_dir ]; if [ ! -d $log_dir ];
then then

View File

@ -31,8 +31,8 @@ done
ROOT="$( cd -P "$( dirname "$SOURCE" )/../.." && pwd )" ROOT="$( cd -P "$( dirname "$SOURCE" )/../.." && pwd )"
pushd "${ROOT}/tests/docker" pushd "${ROOT}/tests/docker"
docker-compose pull --ignore-pull-failures pytest docker compose pull pytest
if [[ -z "${SKIP_CHECK_PYTEST_ENV:-}" ]]; then if [[ -z "${SKIP_CHECK_PYTEST_ENV:-}" ]]; then
docker-compose build pytest docker compose build pytest
fi fi
popd popd