#!/bin/bash # # SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors # SPDX-FileCopyrightText: 2015 ownCloud, Inc. # SPDX-License-Identifier: AGPL-3.0-only # # This script start a docker container to test the files_external tests # against. It will also change the files_external config to use the docker # container as testing environment. This is reverted in the stop step. # # If the environment variable RUN_DOCKER_MYSQL is set the Nextcloud will # be set up using MySQL instead of SQLite. # # Set environment variable DEBUG to print config file # if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker setup" exit 0; fi echo "Docker executable found - setup docker" echo "Fetch recent webdav docker image" docker pull ghcr.io/nextcloud/continuous-integration-webdav-apache:latest # retrieve current folder to place the config in the parent folder thisFolder=`echo $0 | sed 's#env/start-webdav-apache\.sh##'` if [ -z "$thisFolder" ]; then thisFolder="." fi; if [ -n "$RUN_DOCKER_MYSQL" ]; then echo "Fetch recent mysql docker image" docker pull mysql echo "Setup MySQL ..." # user/password will be read by ENV variables in owncloud container (they are generated by docker) databaseContainer=`docker run -e MYSQL_ROOT_PASSWORD=mysupersecretpassword -d mysql` containerName=`docker inspect $databaseContainer | grep Name | grep _ | cut -d \" -f 4 | cut -d / -f 2` parameter="--link $containerName:db" fi container=`docker run -P $parameter -d --rm ghcr.io/nextcloud/continuous-integration-webdav-apache:latest` host=`docker inspect --format="{{.NetworkSettings.IPAddress}}" $container` echo -n "Waiting for Apache initialization on ${host}:${port}" if ! "$thisFolder"/env/wait-for-connection ${host} 80 60; then echo "[ERROR] Waited 60 seconds, no response" >&2 exit 1 fi # wait at least 5 more seconds - sometimes the webserver still needs some additional time sleep 5 cat > $thisFolder/config.webdav.php <true, 'host'=>'${host}:80/webdav/', 'user'=>'test', 'password'=>'pass', 'root'=>'', // wait delay in seconds after write operations // (only in tests) // set to higher value for lighttpd webdav 'wait'=> 0 ); DELIM echo "Nextcloud container: $container" # put container IDs into a file to drop them after the test run (keep in mind that multiple tests run in parallel on the same host) echo $container >> $thisFolder/dockerContainerWebdav.$EXECUTOR_NUMBER.webdav if [ -n "$databaseContainer" ]; then echo "Database container: $databaseContainer" echo $databaseContainer >> $thisFolder/dockerContainerWebdav.$EXECUTOR_NUMBER.webdav fi if [ -n "$DEBUG" ]; then cat $thisFolder/config.webdav.php cat $thisFolder/dockerContainerWebdav.$EXECUTOR_NUMBER.webdav fi