mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-22 12:16:13 +01:00
[TASK] Add -b
option to select container binary (#1076)
TYPO3 core introduced the `-b` option for the `Build/Scripts/runTests.sh` script to provide the ability to select the container binary, `docker` or `podman` and enforces podman for CI (GitLab runner) runs after switching the Core CI infrastructure from Docker-In-Docker to Podman-In-Podman. The `ext:tea` adoption of the `runTests.sh` has been already adopted on a intermediate version and dropped the `docker-compose` based container definitions. Along with other minor prepration patches this allows now to add the container binary selection also. This change modifies `runTests.sh` to * add the `-b` option with a corresponding helptext addition and allows `podman` or `docker` - whereas the latter is the default. * integrates the determined and fixed issues with tty in CI environments by setting some paramater for the commands based on the CI detection (GitHub Action or GitLab Runner). Note: The implemention for `ext:tea` does not enforce hardcoed the `podman` binary for CI environments. If no user selection is provided, it fallbacks to `docker` for all environments. It's worth to mention that the implementation to deal properly with user namespacing and permission handling on mountend volumns it's required to have at least `podman 4.x` installed. Earlier versions does not support the required handlinging and options. Minor moving of variable declaration are done as a drive-by change. The `docsGenerate` suite has been guard and display a concrete message when executed using the `podman` binary. Resolves: #1075 Related: #969
This commit is contained in:
parent
193087a319
commit
8a2e0cbcff
1 changed files with 95 additions and 51 deletions
|
@ -24,7 +24,7 @@ waitFor() {
|
||||||
cleanUp() {
|
cleanUp() {
|
||||||
ATTACHED_CONTAINERS=$(${CONTAINER_BIN} ps --filter network=${NETWORK} --format='{{.Names}}')
|
ATTACHED_CONTAINERS=$(${CONTAINER_BIN} ps --filter network=${NETWORK} --format='{{.Names}}')
|
||||||
for ATTACHED_CONTAINER in ${ATTACHED_CONTAINERS}; do
|
for ATTACHED_CONTAINER in ${ATTACHED_CONTAINERS}; do
|
||||||
${CONTAINER_BIN} rm -f ${ATTACHED_CONTAINER} >/dev/null
|
${CONTAINER_BIN} kill ${ATTACHED_CONTAINER} >/dev/null
|
||||||
done
|
done
|
||||||
${CONTAINER_BIN} network rm ${NETWORK} >/dev/null
|
${CONTAINER_BIN} network rm ${NETWORK} >/dev/null
|
||||||
}
|
}
|
||||||
|
@ -167,6 +167,11 @@ Options:
|
||||||
- mysqli (default)
|
- mysqli (default)
|
||||||
- pdo_mysql
|
- pdo_mysql
|
||||||
|
|
||||||
|
-b <docker|podman>
|
||||||
|
Container environment:
|
||||||
|
- docker (default)
|
||||||
|
- podman
|
||||||
|
|
||||||
-d <sqlite|mariadb|mysql|postgres>
|
-d <sqlite|mariadb|mysql|postgres>
|
||||||
Only with -s functional|functionalDeprecated
|
Only with -s functional|functionalDeprecated
|
||||||
Specifies on which DBMS tests are performed
|
Specifies on which DBMS tests are performed
|
||||||
|
@ -275,11 +280,18 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# Test if docker exists, else exit out with error
|
# Test if docker exists, else exit out with error
|
||||||
if ! type "docker" >/dev/null; then
|
if ! type "docker" >/dev/null 2>&1 && ! type "podman" >/dev/null 2>&1; then
|
||||||
echo "This script relies on docker. Please install" >&2
|
echo "This script relies on docker or podman. Please install at least one of them" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Go to the directory this script is located, so everything else is relative
|
||||||
|
# to this dir, no matter from where this script is called, then go up two dirs.
|
||||||
|
THIS_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
|
||||||
|
cd "$THIS_SCRIPT_DIR" || exit 1
|
||||||
|
cd ../../ || exit 1
|
||||||
|
ROOT_DIR="${PWD}"
|
||||||
|
|
||||||
# Option defaults
|
# Option defaults
|
||||||
TEST_SUITE="unit"
|
TEST_SUITE="unit"
|
||||||
CORE_VERSION="11.5"
|
CORE_VERSION="11.5"
|
||||||
|
@ -292,7 +304,20 @@ EXTRA_TEST_OPTIONS=""
|
||||||
PHPUNIT_RANDOM=""
|
PHPUNIT_RANDOM=""
|
||||||
CGLCHECK_DRY_RUN=0
|
CGLCHECK_DRY_RUN=0
|
||||||
DATABASE_DRIVER=""
|
DATABASE_DRIVER=""
|
||||||
CONTAINER_BIN="docker"
|
CONTAINER_BIN=""
|
||||||
|
DEFAULT_CONTAINER_BIN="docker"
|
||||||
|
DEFAULT_CI_CONTAINER_BIN="docker"
|
||||||
|
COMPOSER_ROOT_VERSION="3.0.x-dev"
|
||||||
|
CONTAINER_INTERACTIVE="-it --init"
|
||||||
|
HOST_UID=$(id -u)
|
||||||
|
HOST_PID=$(id -g)
|
||||||
|
USERSET=""
|
||||||
|
SUFFIX=$(echo $RANDOM)
|
||||||
|
NETWORK="friendsoftypo3-tea-${SUFFIX}"
|
||||||
|
CI_PARAMS=""
|
||||||
|
CONTAINER_HOST="host.docker.internal"
|
||||||
|
PHPSTAN_CONFIG_FILE="phpstan.neon"
|
||||||
|
IS_CORE_CI=0
|
||||||
|
|
||||||
# Option parsing updates above default vars
|
# Option parsing updates above default vars
|
||||||
# Reset in case getopts has been used previously in the shell
|
# Reset in case getopts has been used previously in the shell
|
||||||
|
@ -300,7 +325,7 @@ OPTIND=1
|
||||||
# Array for invalid options
|
# Array for invalid options
|
||||||
INVALID_OPTIONS=()
|
INVALID_OPTIONS=()
|
||||||
# Simple option parsing based on getopts (! not getopt)
|
# Simple option parsing based on getopts (! not getopt)
|
||||||
while getopts "a:s:d:i:p:e:t:xy:o:nhu" OPT; do
|
while getopts "a:b:s:d:i:p:e:t:xy:o:nhu" OPT; do
|
||||||
case ${OPT} in
|
case ${OPT} in
|
||||||
s)
|
s)
|
||||||
TEST_SUITE=${OPTARG}
|
TEST_SUITE=${OPTARG}
|
||||||
|
@ -308,6 +333,12 @@ while getopts "a:s:d:i:p:e:t:xy:o:nhu" OPT; do
|
||||||
a)
|
a)
|
||||||
DATABASE_DRIVER=${OPTARG}
|
DATABASE_DRIVER=${OPTARG}
|
||||||
;;
|
;;
|
||||||
|
b)
|
||||||
|
if ! [[ ${OPTARG} =~ ^(docker|podman)$ ]]; then
|
||||||
|
INVALID_OPTIONS+=("-b ${OPTARG}")
|
||||||
|
fi
|
||||||
|
CONTAINER_BIN=${OPTARG}
|
||||||
|
;;
|
||||||
d)
|
d)
|
||||||
DBMS=${OPTARG}
|
DBMS=${OPTARG}
|
||||||
;;
|
;;
|
||||||
|
@ -317,7 +348,7 @@ while getopts "a:s:d:i:p:e:t:xy:o:nhu" OPT; do
|
||||||
p)
|
p)
|
||||||
PHP_VERSION=${OPTARG}
|
PHP_VERSION=${OPTARG}
|
||||||
if ! [[ ${PHP_VERSION} =~ ^(7.4|8.0|8.1|8.2|8.3)$ ]]; then
|
if ! [[ ${PHP_VERSION} =~ ^(7.4|8.0|8.1|8.2|8.3)$ ]]; then
|
||||||
INVALID_OPTIONS+=("p ${OPTARG}")
|
INVALID_OPTIONS+=("-p ${OPTARG}")
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
e)
|
e)
|
||||||
|
@ -326,7 +357,7 @@ while getopts "a:s:d:i:p:e:t:xy:o:nhu" OPT; do
|
||||||
t)
|
t)
|
||||||
CORE_VERSION=${OPTARG}
|
CORE_VERSION=${OPTARG}
|
||||||
if ! [[ ${CORE_VERSION} =~ ^(11.5|12.4)$ ]]; then
|
if ! [[ ${CORE_VERSION} =~ ^(11.5|12.4)$ ]]; then
|
||||||
INVALID_OPTIONS+=("t ${OPTARG}")
|
INVALID_OPTIONS+=("-t ${OPTARG}")
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
x)
|
x)
|
||||||
|
@ -350,10 +381,10 @@ while getopts "a:s:d:i:p:e:t:xy:o:nhu" OPT; do
|
||||||
TEST_SUITE=update
|
TEST_SUITE=update
|
||||||
;;
|
;;
|
||||||
\?)
|
\?)
|
||||||
INVALID_OPTIONS+=("${OPTARG}")
|
INVALID_OPTIONS+=("-${OPTARG}")
|
||||||
;;
|
;;
|
||||||
:)
|
:)
|
||||||
INVALID_OPTIONS+=("${OPTARG}")
|
INVALID_OPTIONS+=("-${OPTARG}")
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@ -362,41 +393,45 @@ done
|
||||||
if [ ${#INVALID_OPTIONS[@]} -ne 0 ]; then
|
if [ ${#INVALID_OPTIONS[@]} -ne 0 ]; then
|
||||||
echo "Invalid option(s):" >&2
|
echo "Invalid option(s):" >&2
|
||||||
for I in "${INVALID_OPTIONS[@]}"; do
|
for I in "${INVALID_OPTIONS[@]}"; do
|
||||||
echo "-"${I} >&2
|
echo ${I} >&2
|
||||||
done
|
done
|
||||||
echo >&2
|
echo >&2
|
||||||
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options"
|
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
COMPOSER_ROOT_VERSION="3.0.x-dev"
|
handleDbmsOptions
|
||||||
HOST_UID=$(id -u)
|
|
||||||
USERSET=""
|
# ENV var "CI" is set by gitlab-ci. Use it to force some CI details.
|
||||||
if [ $(uname) != "Darwin" ]; then
|
if [ "${CI}" == "true" ]; then
|
||||||
|
IS_CORE_CI=1
|
||||||
|
CONTAINER_INTERACTIVE=""
|
||||||
|
# set default ci container binary, if not set using "-b" option
|
||||||
|
if [ ${CONTAINER_BIN} = "" ]; then
|
||||||
|
CONTAINER_BIN="${DEFAULT_CI_CONTAINER_BIN}"
|
||||||
|
fi
|
||||||
|
CI_PARAMS="--pull=never"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set default container binary, if not set using "-b" option
|
||||||
|
if [ "${CONTAINER_BIN}" = "" ]; then
|
||||||
|
CONTAINER_BIN="${DEFAULT_CONTAINER_BIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $(uname) != "Darwin" ] && [ ${CONTAINER_BIN} = "docker" ]; then
|
||||||
|
# Run docker jobs as current user to prevent permission issues. Not needed with podman.
|
||||||
USERSET="--user $HOST_UID"
|
USERSET="--user $HOST_UID"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Go to the directory this script is located, so everything else is relative
|
if ! type ${CONTAINER_BIN} >/dev/null 2>&1; then
|
||||||
# to this dir, no matter from where this script is called, then go up two dirs.
|
echo "Selected container environment \"${CONTAINER_BIN}\" not found. Please install \"${CONTAINER_BIN}\" or use -b option to select one." >&2
|
||||||
THIS_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
|
exit 1
|
||||||
cd "$THIS_SCRIPT_DIR" || exit 1
|
fi
|
||||||
cd ../../ || exit 1
|
|
||||||
ROOT_DIR="${PWD}"
|
|
||||||
|
|
||||||
# Create .cache dir: composer need this.
|
# Create .cache dir: composer need this.
|
||||||
mkdir -p .cache
|
mkdir -p .cache
|
||||||
mkdir -p .Build/Web/typo3temp/var/tests
|
mkdir -p .Build/Web/typo3temp/var/tests
|
||||||
|
|
||||||
PHPSTAN_CONFIG_FILE="phpstan.neon"
|
|
||||||
CONTAINER_INTERACTIVE="-it --init"
|
|
||||||
|
|
||||||
IS_CORE_CI=0
|
|
||||||
# ENV var "CI" is set by gitlab-ci. We use it here to distinct 'local' and 'CI' environment.
|
|
||||||
if [ "${CI}" == "true" ]; then
|
|
||||||
IS_CORE_CI=1
|
|
||||||
CONTAINER_INTERACTIVE=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
IMAGE_PHP="ghcr.io/typo3/core-testing-$(echo "php${PHP_VERSION}" | sed -e 's/\.//'):latest"
|
IMAGE_PHP="ghcr.io/typo3/core-testing-$(echo "php${PHP_VERSION}" | sed -e 's/\.//'):latest"
|
||||||
IMAGE_ALPINE="docker.io/alpine:3.8"
|
IMAGE_ALPINE="docker.io/alpine:3.8"
|
||||||
IMAGE_DOCS="ghcr.io/t3docs/render-documentation:latest"
|
IMAGE_DOCS="ghcr.io/t3docs/render-documentation:latest"
|
||||||
|
@ -408,12 +443,15 @@ IMAGE_POSTGRES="docker.io/postgres:${DBMS_VERSION}-alpine"
|
||||||
shift $((OPTIND - 1))
|
shift $((OPTIND - 1))
|
||||||
TEST_FILE=${1}
|
TEST_FILE=${1}
|
||||||
|
|
||||||
SUFFIX=$(echo $RANDOM)
|
|
||||||
NETWORK="friendsoftypo3-tea-${SUFFIX}"
|
|
||||||
${CONTAINER_BIN} network create ${NETWORK} >/dev/null
|
${CONTAINER_BIN} network create ${NETWORK} >/dev/null
|
||||||
|
|
||||||
CONTAINER_COMMON_PARAMS="${CONTAINER_INTERACTIVE} --rm --network $NETWORK --add-host "host.docker.internal:host-gateway" $USERSET -v ${ROOT_DIR}:${ROOT_DIR} -w ${ROOT_DIR}"
|
if [ "${CONTAINER_BIN}" == "docker" ]; then
|
||||||
CONTAINER_DOCS_PARAMS="${CONTAINER_INTERACTIVE} --rm $USERSET -v ${ROOT_DIR}:/PROJECT -v ${ROOT_DIR}/Documentation-GENERATED-temp:/RESULT -w ${ROOT_DIR}"
|
CONTAINER_COMMON_PARAMS="${CONTAINER_INTERACTIVE} --rm --network ${NETWORK} --add-host "${CONTAINER_HOST}:host-gateway" ${USERSET} -v ${ROOT_DIR}:${ROOT_DIR} -w ${ROOT_DIR}"
|
||||||
|
else
|
||||||
|
# podman
|
||||||
|
CONTAINER_HOST="host.containers.internal"
|
||||||
|
CONTAINER_COMMON_PARAMS="${CONTAINER_INTERACTIVE} ${CI_PARAMS} --rm --network ${NETWORK} -v ${ROOT_DIR}:${ROOT_DIR} -w ${ROOT_DIR}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
|
if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
|
||||||
XDEBUG_MODE="-e XDEBUG_MODE=off"
|
XDEBUG_MODE="-e XDEBUG_MODE=off"
|
||||||
|
@ -480,20 +518,29 @@ case ${TEST_SUITE} in
|
||||||
;;
|
;;
|
||||||
docsGenerate)
|
docsGenerate)
|
||||||
# @todo contact the documentation team for a future rootles podman version
|
# @todo contact the documentation team for a future rootles podman version
|
||||||
|
if [ ${CONTAINER_BIN} = "podman" ]; then
|
||||||
|
echo "-s docsGenerate is not usable with -b podman"
|
||||||
|
echo "TYPO3 Documentation Team needs to deal with this, and we will"
|
||||||
|
echo "see if the upcoming php based documentation rendering container"
|
||||||
|
echo "will support podman out-of-the-box"
|
||||||
|
echo ""
|
||||||
|
echo "Please use -b docker -s docsGenerate"
|
||||||
|
SUITE_EXIT_CODE=1
|
||||||
|
else
|
||||||
${CONTAINER_BIN} run --rm ${IMAGE_DOCS} show-shell-commands > generate-documentation.sh
|
${CONTAINER_BIN} run --rm ${IMAGE_DOCS} show-shell-commands > generate-documentation.sh
|
||||||
echo 'dockrun_t3rd makehtml' >> generate-documentation.sh
|
echo 'dockrun_t3rd makehtml' >> generate-documentation.sh
|
||||||
bash generate-documentation.sh
|
bash generate-documentation.sh
|
||||||
rm -Rf generate-documentation.sh
|
rm -Rf generate-documentation.sh
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
functional)
|
functional)
|
||||||
[ -z "${TEST_FILE}" ] && TEST_FILE="Tests/Functional"
|
[ -z "${TEST_FILE}" ] && TEST_FILE="Tests/Functional"
|
||||||
handleDbmsOptions
|
|
||||||
COMMAND=".Build/bin/phpunit -c .Build/vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml --exclude-group not-${DBMS} ${EXTRA_TEST_OPTIONS} ${TEST_FILE}"
|
COMMAND=".Build/bin/phpunit -c .Build/vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml --exclude-group not-${DBMS} ${EXTRA_TEST_OPTIONS} ${TEST_FILE}"
|
||||||
case ${DBMS} in
|
case ${DBMS} in
|
||||||
mariadb)
|
mariadb)
|
||||||
echo "Using driver: ${DATABASE_DRIVER}"
|
echo "Using driver: ${DATABASE_DRIVER}"
|
||||||
${CONTAINER_BIN} run --name mariadb-func-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=funcp --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MARIADB} >/dev/null
|
${CONTAINER_BIN} run --rm ${CI_PARAMS} --name mariadb-func-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=funcp --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MARIADB} >/dev/null
|
||||||
waitFor mariadb-func-${SUFFIX} 3306
|
waitFor mariadb-func-${SUFFIX} 3306
|
||||||
CONTAINERPARAMS="-e typo3DatabaseDriver=${DATABASE_DRIVER} -e typo3DatabaseName=func_test -e typo3DatabaseUsername=root -e typo3DatabaseHost=mariadb-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
CONTAINERPARAMS="-e typo3DatabaseDriver=${DATABASE_DRIVER} -e typo3DatabaseName=func_test -e typo3DatabaseUsername=root -e typo3DatabaseHost=mariadb-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
||||||
|
@ -501,14 +548,14 @@ case ${TEST_SUITE} in
|
||||||
;;
|
;;
|
||||||
mysql)
|
mysql)
|
||||||
echo "Using driver: ${DATABASE_DRIVER}"
|
echo "Using driver: ${DATABASE_DRIVER}"
|
||||||
${CONTAINER_BIN} run --name mysql-func-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=funcp --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MYSQL} >/dev/null
|
${CONTAINER_BIN} run --rm ${CI_PARAMS} --name mysql-func-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=funcp --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MYSQL} >/dev/null
|
||||||
waitFor mysql-func-${SUFFIX} 3306
|
waitFor mysql-func-${SUFFIX} 3306
|
||||||
CONTAINERPARAMS="-e typo3DatabaseDriver=${DATABASE_DRIVER} -e typo3DatabaseName=func_test -e typo3DatabaseUsername=root -e typo3DatabaseHost=mysql-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
CONTAINERPARAMS="-e typo3DatabaseDriver=${DATABASE_DRIVER} -e typo3DatabaseName=func_test -e typo3DatabaseUsername=root -e typo3DatabaseHost=mysql-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
postgres)
|
postgres)
|
||||||
${CONTAINER_BIN} run --name postgres-func-${SUFFIX} --network ${NETWORK} -d -e POSTGRES_PASSWORD=funcp -e POSTGRES_USER=funcu --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid ${IMAGE_POSTGRES} >/dev/null
|
${CONTAINER_BIN} run --rm ${CI_PARAMS} --name postgres-func-${SUFFIX} --network ${NETWORK} -d -e POSTGRES_PASSWORD=funcp -e POSTGRES_USER=funcu --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid ${IMAGE_POSTGRES} >/dev/null
|
||||||
waitFor postgres-func-${SUFFIX} 5432
|
waitFor postgres-func-${SUFFIX} 5432
|
||||||
CONTAINERPARAMS="-e typo3DatabaseDriver=pdo_pgsql -e typo3DatabaseName=bamboo -e typo3DatabaseUsername=funcu -e typo3DatabaseHost=postgres-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
CONTAINERPARAMS="-e typo3DatabaseDriver=pdo_pgsql -e typo3DatabaseName=bamboo -e typo3DatabaseUsername=funcu -e typo3DatabaseHost=postgres-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
||||||
|
@ -564,17 +611,13 @@ case ${TEST_SUITE} in
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
update)
|
update)
|
||||||
# prune unused, dangling local volumes
|
|
||||||
echo "> prune unused, dangling local volumes"
|
|
||||||
${CONTAINER_BIN} volume ls -q -f driver=local -f dangling=true | awk '$0 ~ /^[0-9a-f]{64}$/ { print }' | xargs -I {} ${CONTAINER_BIN} volume rm {}
|
|
||||||
echo ""
|
|
||||||
# pull typo3/core-testing-*:latest versions of those ones that exist locally
|
# pull typo3/core-testing-*:latest versions of those ones that exist locally
|
||||||
echo "> pull ${TYPO3_IMAGE_PREFIX}core-testing-*:latest versions of those ones that exist locally"
|
echo "> pull ghcr.io/typo3/core-testing-*:latest versions of those ones that exist locally"
|
||||||
${CONTAINER_BIN} images ${TYPO3_IMAGE_PREFIX}core-testing-*:latest --format "{{.Repository}}:latest" | xargs -I {} ${CONTAINER_BIN} pull {}
|
${CONTAINER_BIN} images ghcr.io/typo3/core-testing-*:latest --format "{{.Repository}}:latest" | xargs -I {} ${CONTAINER_BIN} pull {}
|
||||||
echo ""
|
echo ""
|
||||||
# remove "dangling" typo3/core-testing-* images (those tagged as <none>)
|
# remove "dangling" typo3/core-testing-* images (those tagged as <none>)
|
||||||
echo "> remove \"dangling\" ${TYPO3_IMAGE_PREFIX}core-testing-* images (those tagged as <none>)"
|
echo "> remove \"dangling\" ghcr.io/typo3/core-testing-* images (those tagged as <none>)"
|
||||||
${CONTAINER_BIN} images ${TYPO3_IMAGE_PREFIX}core-testing-* --filter "dangling=true" --format "{{.ID}}" | xargs -I {} ${CONTAINER_BIN} rmi {}
|
${CONTAINER_BIN} images ghcr.io/typo3/core-testing-* --filter "dangling=true" --format "{{.ID}}" | xargs -I {} ${CONTAINER_BIN} rmi {}
|
||||||
echo ""
|
echo ""
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -599,6 +642,7 @@ else
|
||||||
fi
|
fi
|
||||||
echo "PHP: ${PHP_VERSION}" >&2
|
echo "PHP: ${PHP_VERSION}" >&2
|
||||||
echo "TYPO3: ${CORE_VERSION}" >&2
|
echo "TYPO3: ${CORE_VERSION}" >&2
|
||||||
|
echo "CONTAINER_BIN: ${CONTAINER_BIN}"
|
||||||
if [[ ${TEST_SUITE} =~ ^functional$ ]]; then
|
if [[ ${TEST_SUITE} =~ ^functional$ ]]; then
|
||||||
case "${DBMS}" in
|
case "${DBMS}" in
|
||||||
mariadb)
|
mariadb)
|
||||||
|
|
Loading…
Reference in a new issue