From 614ebf5f6b25e77123e8ca26380747eab9fcdd96 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Tue, 11 Jun 2024 16:57:49 +0200 Subject: [PATCH] .ci/run_tests.sh: fix podman run of container-based testing (#57688) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes GH-57724 --------- Co-authored-by: Laurențiu Nicola --- .ci/run_tests.sh | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/.ci/run_tests.sh b/.ci/run_tests.sh index 5aed8e0c0ef..cdc8d16c699 100755 --- a/.ci/run_tests.sh +++ b/.ci/run_tests.sh @@ -2,13 +2,20 @@ set -e +DOCKER=$(command -v podman docker | head -1) + # check for docker availability -command -v docker > /dev/null || { - echo "Please install docker" >&2 +test -n "${DOCKER}" || { + echo "Please install podman or docker" >&2 exit 1 } -IMAGE_BUILD_DEPS=qgis/qgis3-build-deps:latest +DOCKER_COMPOSE=$(command -v podman-compose docker-compose | head -1) +test -n "${DOCKER_COMPOSE}" || { + DOCKER_COMPOSE="${DOCKER} compose" # TODO: check if supported +} + +IMAGE_BUILD_DEPS=docker.io/qgis/qgis3-build-deps:latest UPDATE_IMAGES=yes INTERACTIVE=no FORCE_REBUILD=no @@ -70,22 +77,25 @@ echo "--=[ QGIS_COMMON_GIT_DIR is $QGIS_COMMON_GIT_DIR" # Make qgis3-build-deps-binary-image available, building it if needed # -if test "$(docker images -q ${IMAGE_BUILD_DEPS})" = ""; then +if test "$(${DOCKER} images -q ${IMAGE_BUILD_DEPS})" = ""; then echo "--=[ Fetching qgis build dependencies image" - docker pull ${IMAGE_BUILD_DEPS} + ${DOCKER} pull ${IMAGE_BUILD_DEPS} elif test "${UPDATE_IMAGES}" = "yes"; then echo "--=[ Updating qgis build dependencies image" - docker pull ${IMAGE_BUILD_DEPS} + ${DOCKER} pull ${IMAGE_BUILD_DEPS} fi if test -d ${QGIS_BUILDDIR} -a "${FORCE_REBUILD}" = "no"; then echo "--=[ Testing against pre-existing build directory ${QGIS_BUILDDIR}. To rebuild use --force-rebuild or move it away" else echo "--=[ Building qgis inside the dependencies container" - docker run -t --name qgis_container \ + VOLUMES="-v ${QGIS_WORKSPACE}:${QGIS_WORKSPACE}:z" + if test "${QGIS_WORKSPACE}" != "${QGIS_COMMON_GIT_DIR}"; then + VOLUMES="${VOLUMES} -v ${QGIS_COMMON_GIT_DIR}:${QGIS_COMMON_GIT_DIR}:z" + fi + ${DOCKER} run -t --name qgis_container \ --rm \ - -v ${QGIS_WORKSPACE}:${QGIS_WORKSPACE} \ - -v ${QGIS_COMMON_GIT_DIR}:${QGIS_COMMON_GIT_DIR} \ + ${VOLUMES} \ --env-file .docker/docker-variables.env \ --env PUSH_TO_CDASH=false \ --env WITH_QT5=true \ @@ -105,9 +115,9 @@ else } fi -if test "$(docker images -q qgis3-build-deps-binary-image)" = ""; then +if test "$(${DOCKER} images -q qgis3-build-deps-binary-image)" = ""; then echo "--=[ Tagging qgis build dependencies image as required by .docker/docker-compose-testing.yml" - docker tag ${IMAGE_BUILD_DEPS} qgis3-build-deps-binary-image + ${DOCKER} tag ${IMAGE_BUILD_DEPS} qgis3-build-deps-binary-image fi if test "${INTERACTIVE}" = "no"; then @@ -125,7 +135,7 @@ mkdir -p /tmp/minio_tests/test-bucket && chmod -R 777 /tmp/minio_tests # Create an empty webdav folder with appropriate permissions so www user can write inside it mkdir -p /tmp/webdav_tests && chmod 777 /tmp/webdav_tests -docker compose \ +${DOCKER_COMPOSE} \ -f .docker/docker-compose-testing.yml \ run \ -w "${QGIS_WORKSPACE_MOUNTPOINT}" \