@@ -5,6 +5,7 @@ set -eo pipefail
55SCRIPT_LOCATION=$( dirname " $0 " )
66source " $SCRIPT_LOCATION " /utils.sh
77
8+ # usage example: sudo ./run_multi_node_mtr.sh --columnstore-image-name mariadb/enterprise-columnstore-dev:stable-23.10-pull-request2240 --distro rockylinux:8
89optparse.define short=i long=columnstore-image-name desc=" Name of columnstore docker image" variable=MCS_IMAGE_NAME
910optparse.define short=d long=distro desc=" Linux distro for which multinode mtr is executed" variable=DISTRO
1011source $( optparse.build)
3536
3637message " Running multinode mtr tests..."
3738
39+ # Detect docker compose command (new syntax vs old)
40+ if command -v docker & > /dev/null && docker compose version & > /dev/null; then
41+ DOCKER_COMPOSE=" docker compose"
42+ elif command -v docker-compose & > /dev/null; then
43+ DOCKER_COMPOSE=" docker-compose"
44+ else
45+ error " Docker compose is not installed!"
46+ exit 1
47+ fi
48+
49+ # Handle Docker Hub authentication
50+ message " Checking Docker Hub authentication..."
51+ if [[ -n " ${DOCKER_LOGIN:- } " ]] && [[ -n " ${DOCKER_PASSWORD:- } " ]]; then
52+ # CI environment - use credentials from secrets
53+ message " Using Docker credentials from environment variables"
54+ echo " $DOCKER_PASSWORD " | docker login --username " $DOCKER_LOGIN " --password-stdin
55+ if [[ $? -ne 0 ]]; then
56+ error " Docker login failed with provided credentials"
57+ exit 1
58+ fi
59+ else
60+ message " No Docker credentials in env variables found, checking if already logged in..."
61+
62+ # Try to verify docker login by checking auth for docker.io
63+ if docker system info 2>&1 | grep -q " Username:" ; then
64+ message " Already logged in to Docker Hub"
65+ else
66+ message " Not logged in to Docker Hub"
67+ message " You need to login to Docker Hub to pull enterprise-columnstore-dev images"
68+ message " "
69+
70+ # Prompt for username
71+ read -p " Docker Hub Username: " docker_username
72+
73+ # Run docker login with username (will prompt for password)
74+ docker login -u " $docker_username "
75+
76+ if [[ $? -ne 0 ]]; then
77+ error " Docker login failed or was cancelled"
78+ exit 1
79+ fi
80+
81+ message " Docker login successful"
82+ fi
83+ fi
84+
85+ # Check if docker folder exists and has required files
86+ if [[ ! -d " docker" ]] || [[ ! -f " docker/Dockerfile" ]]; then
87+ message " Docker folder not found or incomplete, cloning mariadb-columnstore-docker repository..."
88+ " $SCRIPT_LOCATION " /clone_docker_repo.sh
89+ fi
90+
3891cd docker
92+
93+ # Clean up any existing containers from previous runs
94+ if docker ps -a --format ' {{.Names}}' | grep -q -E ' ^(mcs1|mcs2|mcs3)$' ; then
95+ message " Found existing containers from previous run, cleaning up..."
96+ $DOCKER_COMPOSE down -v 2> /dev/null || true
97+ docker rm -f mcs1 mcs2 mcs3 2> /dev/null || true
98+ message " Cleanup completed"
99+ fi
100+
39101cp .env_example .env
40102sed -i " /^MCS_IMAGE_NAME=/s|=.*|=${MCS_IMAGE_NAME} |" .env
41103sed -i " /^MAXSCALE=/s|=.*|=false|" .env
42104
43- docker-compose up -d
105+ message " Starting containers..."
106+ $DOCKER_COMPOSE up -d
107+
108+ message " Provisioning cluster..."
44109docker exec mcs1 provision mcs1 mcs2 mcs3
45110docker cp ../mysql-test/columnstore mcs1:" ${MTR_PATH} /suite/"
46111docker exec -t mcs1 chown -R mysql:mysql " ${MTR_PATH} "
0 commit comments