Skip to content

Commit d7ec00a

Browse files
MCOL-6217 adapt run_multi_node_mtr.sh for a convenient local use
1 parent 2f0f5a7 commit d7ec00a

File tree

3 files changed

+110
-16
lines changed

3 files changed

+110
-16
lines changed

.drone.jsonnet

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -396,23 +396,13 @@ local Pipeline(branch, platform, event, arch="amd64", server="10.6-enterprise",
396396
name: "dockerfile",
397397
depends_on: ["publish pkg", "publish cmapi build"],
398398
image: "alpine/git:2.49.0",
399+
volumes: [pipeline._volumes.mdb],
399400
environment: {
400-
DOCKER_BRANCH_REF: "${DRONE_SOURCE_BRANCH}",
401-
DOCKER_REF_AUX: branch_ref,
401+
DRONE_SOURCE_BRANCH: "${DRONE_SOURCE_BRANCH}",
402402
},
403403
commands: [
404-
// compute branch.
405-
'echo "$$DOCKER_REF"',
406-
'echo "$$DOCKER_BRANCH_REF"',
407-
// if DOCKER_REF is empty, try to see whether docker repository has a branch named as one we PR.
408-
'export DOCKER_REF=$${DOCKER_REF:-$$(git ls-remote https://github.com/mariadb-corporation/mariadb-columnstore-docker --h --sort origin "refs/heads/$$DOCKER_BRANCH_REF" | grep -E -o "[^/]+$$")}',
409-
'echo "$$DOCKER_REF"',
410-
// DOCKER_REF can be empty if there is no appropriate branch in docker repository.
411-
// assign what is appropriate by default.
412-
"export DOCKER_REF=$${DOCKER_REF:-$$DOCKER_REF_AUX}",
413-
'echo "$$DOCKER_REF"',
414-
"git clone --branch $$DOCKER_REF --depth 1 https://github.com/mariadb-corporation/mariadb-columnstore-docker docker",
415-
"touch docker/.secrets",
404+
"apk add bash && " +
405+
get_build_command("clone_docker_repo.sh"),
416406
],
417407
},
418408
dockerhub:: {
@@ -485,7 +475,6 @@ local Pipeline(branch, platform, event, arch="amd64", server="10.6-enterprise",
485475
MCS_IMAGE_NAME: "mariadb/enterprise-columnstore-dev:" + container_tags[0],
486476
},
487477
commands: [
488-
"echo $$DOCKER_PASSWORD | docker login --username $$DOCKER_LOGIN --password-stdin",
489478
"apk add bash && " +
490479
get_build_command("run_multi_node_mtr.sh") +
491480
" --columnstore-image-name $${MCS_IMAGE_NAME} " +

build/clone_docker_repo.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/bash
2+
3+
set -eo pipefail
4+
5+
SCRIPT_LOCATION=$(dirname "$0")
6+
source "$SCRIPT_LOCATION"/utils.sh
7+
8+
9+
# Determine which branch to use
10+
DOCKER_REF="${DOCKER_REF:-}"
11+
DOCKER_BRANCH_REF="${DRONE_SOURCE_BRANCH:-stable-23.10}"
12+
DOCKER_REF_AUX="stable-23.10"
13+
14+
message "Checking for docker repository branch: $DOCKER_BRANCH_REF"
15+
16+
# Try to find matching branch in docker repository
17+
if [[ -z "$DOCKER_REF" ]]; then
18+
DOCKER_REF=$(git ls-remote https://github.com/mariadb-corporation/mariadb-columnstore-docker --heads --sort origin "refs/heads/$DOCKER_BRANCH_REF" 2>/dev/null | grep -E -o "[^/]+$" || true)
19+
fi
20+
21+
# Fall back to default branch if no match found
22+
if [[ -z "$DOCKER_REF" ]]; then
23+
DOCKER_REF="$DOCKER_REF_AUX"
24+
fi
25+
26+
message "Cloning docker repository from branch: $DOCKER_REF"
27+
28+
# Remove existing docker folder if it exists to avoid git clone conflicts
29+
if [[ -d "docker" ]]; then
30+
message "Removing existing docker folder..."
31+
rm -rf docker
32+
fi
33+
34+
# Clone the docker repository
35+
git clone --branch "$DOCKER_REF" --depth 1 https://github.com/mariadb-corporation/mariadb-columnstore-docker docker
36+
37+
# Create empty .secrets file
38+
touch docker/.secrets
39+
40+
message "Docker repository cloned successfully"

build/run_multi_node_mtr.sh

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -eo pipefail
55
SCRIPT_LOCATION=$(dirname "$0")
66
source "$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
89
optparse.define short=i long=columnstore-image-name desc="Name of columnstore docker image" variable=MCS_IMAGE_NAME
910
optparse.define short=d long=distro desc="Linux distro for which multinode mtr is executed" variable=DISTRO
1011
source $(optparse.build)
@@ -35,12 +36,76 @@ fi
3536

3637
message "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+
3891
cd 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+
39101
cp .env_example .env
40102
sed -i "/^MCS_IMAGE_NAME=/s|=.*|=${MCS_IMAGE_NAME}|" .env
41103
sed -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..."
44109
docker exec mcs1 provision mcs1 mcs2 mcs3
45110
docker cp ../mysql-test/columnstore mcs1:"${MTR_PATH}/suite/"
46111
docker exec -t mcs1 chown -R mysql:mysql "${MTR_PATH}"

0 commit comments

Comments
 (0)