mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-15 20:24:07 +00:00
9b5950f403
Fixed test in docker: writing to read-only filesystem Multi-stage builds for test-runner and server to allow putting packages directory anywhere Fixed more tests
84 lines
3.3 KiB
Bash
Executable File
84 lines
3.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e -x
|
|
|
|
trap 'rc=$?; echo EXITED WITH: $rc; exit $rc' EXIT
|
|
|
|
# CLI option to prevent rebuilding images, just re-run tests with images leftover from previuos time
|
|
readonly NO_REBUILD_FLAG="--no-rebuild"
|
|
|
|
readonly CLICKHOUSE_DOCKER_DIR="$(realpath ${1})"
|
|
readonly CLICKHOUSE_PACKAGES_ARG="${2}"
|
|
CLICKHOUSE_SERVER_IMAGE="${3}"
|
|
|
|
if [ ${CLICKHOUSE_PACKAGES_ARG} != ${NO_REBUILD_FLAG} ]; then
|
|
readonly CLICKHOUSE_PACKAGES_DIR="$(realpath ${2})" # or --no-rebuild
|
|
fi
|
|
|
|
|
|
# In order to allow packages directory to be anywhere, and to reduce amoun of context sent to the docker daemon,
|
|
# all images are built in multiple stages:
|
|
# 1. build base image, install dependencies
|
|
# 2. run image with volume mounted, install what needed from those volumes
|
|
# 3. tag container as image
|
|
# 4. [optional] build another image atop of tagged.
|
|
|
|
# TODO: optionally mount most recent clickhouse-test and queries directory from local machine
|
|
|
|
if [ ${CLICKHOUSE_PACKAGES_ARG} != ${NO_REBUILD_FLAG} ]; then
|
|
docker build \
|
|
-f "${CLICKHOUSE_DOCKER_DIR}/test/stateless/clickhouse-statelest-test-runner.Dockerfile" \
|
|
--target clickhouse-test-runner-base \
|
|
-t clickhouse-test-runner-base:preinstall \
|
|
"${CLICKHOUSE_DOCKER_DIR}/test/stateless"
|
|
|
|
docker rm -f clickhouse-test-runner-installing-packages || true
|
|
docker run \
|
|
-v "${CLICKHOUSE_PACKAGES_DIR}:/packages" \
|
|
--name clickhouse-test-runner-installing-packages \
|
|
clickhouse-test-runner-base:preinstall
|
|
docker commit clickhouse-test-runner-installing-packages clickhouse-statelest-test-runner:local
|
|
docker rm -f clickhouse-test-runner-installing-packages || true
|
|
fi
|
|
|
|
# # Create a bind-volume to the clickhouse-test script file
|
|
# docker volume create --driver local --opt type=none --opt device=/home/enmk/proj/ClickHouse_master/dbms/tests/clickhouse-test --opt o=bind clickhouse-test-script-volume
|
|
# docker volume create --driver local --opt type=none --opt device=/home/enmk/proj/ClickHouse_master/dbms/tests/queries --opt o=bind clickhouse-test-queries-dir-volume
|
|
|
|
# Build server image (optional) from local packages
|
|
if [ -z "${CLICKHOUSE_SERVER_IMAGE}" ]; then
|
|
CLICKHOUSE_SERVER_IMAGE="yandex/clickhouse-server:local"
|
|
|
|
if [ ${CLICKHOUSE_PACKAGES_ARG} != ${NO_REBUILD_FLAG} ]; then
|
|
docker build \
|
|
-f "${CLICKHOUSE_DOCKER_DIR}/server/local.Dockerfile" \
|
|
--target clickhouse-server-base \
|
|
-t clickhouse-server-base:preinstall \
|
|
"${CLICKHOUSE_DOCKER_DIR}/server"
|
|
|
|
docker rm -f clickhouse_server_base_installing_server || true
|
|
docker run -v "${CLICKHOUSE_PACKAGES_DIR}:/packages" \
|
|
--name clickhouse_server_base_installing_server \
|
|
clickhouse-server-base:preinstall
|
|
docker commit clickhouse_server_base_installing_server clickhouse-server-base:postinstall
|
|
|
|
docker build \
|
|
-f "${CLICKHOUSE_DOCKER_DIR}/server/local.Dockerfile" \
|
|
--target clickhouse-server \
|
|
-t "${CLICKHOUSE_SERVER_IMAGE}" \
|
|
"${CLICKHOUSE_DOCKER_DIR}/server"
|
|
fi
|
|
fi
|
|
|
|
docker rm -f test-runner || true
|
|
docker-compose down
|
|
CLICKHOUSE_SERVER_IMAGE="${CLICKHOUSE_SERVER_IMAGE}" \
|
|
docker-compose -f "${CLICKHOUSE_DOCKER_DIR}/test/test_runner_docker_compose.yaml" \
|
|
create \
|
|
--build --force-recreate
|
|
|
|
CLICKHOUSE_SERVER_IMAGE="${CLICKHOUSE_SERVER_IMAGE}" \
|
|
docker-compose -f "${CLICKHOUSE_DOCKER_DIR}/test/test_runner_docker_compose.yaml" \
|
|
run \
|
|
--name test-runner \
|
|
test-runner |