mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-10 11:01:14 +00:00
Adjust CI tests
This commit is contained in:
146
tests/.lib.sh
146
tests/.lib.sh
@@ -10,11 +10,11 @@ set -o pipefail
|
||||
###
|
||||
function run() {
|
||||
local cmd="${1}"
|
||||
local to_stderr=0
|
||||
local to_stdout=0
|
||||
|
||||
# Output to stderr instead?
|
||||
# Output to stdout instead?
|
||||
if [ "${#}" -eq "2" ]; then
|
||||
to_stderr="${2}"
|
||||
to_stdout="${2}"
|
||||
fi
|
||||
|
||||
local red="\033[0;31m"
|
||||
@@ -22,24 +22,24 @@ function run() {
|
||||
local yellow="\033[0;33m"
|
||||
local reset="\033[0m"
|
||||
|
||||
if [ "${to_stderr}" -eq "0" ]; then
|
||||
printf "${yellow}[%s] ${red}%s \$ ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)"
|
||||
else
|
||||
if [ "${to_stdout}" -eq "0" ]; then
|
||||
printf "${yellow}[%s] ${red}%s \$ ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)" >&2
|
||||
else
|
||||
printf "${yellow}[%s] ${red}%s \$ ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)"
|
||||
fi
|
||||
|
||||
if sh -c "${cmd}"; then
|
||||
if [ "${to_stderr}" -eq "0" ]; then
|
||||
printf "${green}[%s]${reset}\n" "OK"
|
||||
else
|
||||
if [ "${to_stdout}" -eq "0" ]; then
|
||||
printf "${green}[%s]${reset}\n" "OK" >&2
|
||||
else
|
||||
printf "${green}[%s]${reset}\n" "OK"
|
||||
fi
|
||||
return 0
|
||||
else
|
||||
if [ "${to_stderr}" -eq "0" ]; then
|
||||
printf "${red}[%s]${reset}\n" "NO"
|
||||
else
|
||||
if [ "${to_stdout}" -eq "0" ]; then
|
||||
printf "${red}[%s]${reset}\n" "NO" >&2
|
||||
else
|
||||
printf "${red}[%s]${reset}\n" "NO"
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
@@ -49,11 +49,11 @@ function run() {
|
||||
###
|
||||
function run_fail() {
|
||||
local cmd="${1}"
|
||||
local to_stderr=0
|
||||
local to_stdout=0
|
||||
|
||||
# Output to stderr instead?
|
||||
# Output to stdout instead?
|
||||
if [ "${#}" -eq "2" ]; then
|
||||
to_stderr="${2}"
|
||||
to_stdout="${2}"
|
||||
fi
|
||||
|
||||
local red="\033[0;31m"
|
||||
@@ -61,29 +61,51 @@ function run_fail() {
|
||||
local yellow="\033[0;33m"
|
||||
local reset="\033[0m"
|
||||
|
||||
if [ "${to_stderr}" -eq "0" ]; then
|
||||
printf "${yellow}[%s] ${red}%s \$ ${yellow}[NOT] ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)"
|
||||
else
|
||||
if [ "${to_stdout}" -eq "0" ]; then
|
||||
printf "${yellow}[%s] ${red}%s \$ ${yellow}[NOT] ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)" >&2
|
||||
else
|
||||
printf "${yellow}[%s] ${red}%s \$ ${yellow}[NOT] ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)"
|
||||
fi
|
||||
|
||||
if ! sh -c "${cmd}"; then
|
||||
if [ "${to_stderr}" -eq "0" ]; then
|
||||
printf "${green}[%s]${reset}\n" "OK"
|
||||
else
|
||||
if [ "${to_stdout}" -eq "0" ]; then
|
||||
printf "${green}[%s]${reset}\n" "OK" >&2
|
||||
else
|
||||
printf "${green}[%s]${reset}\n" "OK"
|
||||
fi
|
||||
return 0
|
||||
else
|
||||
if [ "${to_stderr}" -eq "0" ]; then
|
||||
printf "${red}[%s]${reset}\n" "NO"
|
||||
else
|
||||
if [ "${to_stdout}" -eq "0" ]; then
|
||||
printf "${red}[%s]${reset}\n" "NO" >&2
|
||||
else
|
||||
printf "${red}[%s]${reset}\n" "NO"
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
### Print H2
|
||||
###
|
||||
function print_h2() {
|
||||
local text="${1}"
|
||||
|
||||
local red="\033[0;31m"
|
||||
local green="\033[0;32m"
|
||||
local yellow="\033[0;33m"
|
||||
local purple="\033[0;35m"
|
||||
local reset="\033[0m"
|
||||
|
||||
echo
|
||||
echo
|
||||
printf "${purple}%s${reset}\n" "###"
|
||||
printf "${purple}%s${reset}\n" "### ${text}"
|
||||
printf "${purple}%s${reset}\n" "###"
|
||||
echo
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
### Get 15 character random word
|
||||
###
|
||||
@@ -114,17 +136,43 @@ function docker_run() {
|
||||
local args="${*}"
|
||||
|
||||
# Returns docker-id
|
||||
did="$( run "docker run --rm -d --platform ${architecture} --name $( get_random_name ) ${args} ${image_name}" "1" )"
|
||||
sleep 10
|
||||
>&2 echo "------------------------------ [STARTING CONTAINER] ------------------------------"
|
||||
name="$( get_random_name )"
|
||||
run "docker run --rm --platform ${architecture} --name ${name} ${args} ${image_name} &" 1>&2
|
||||
run "sleep 10"
|
||||
|
||||
# If it fails, start again in foreground to fail again, but show errors
|
||||
if ! docker exec "$(tty -s && echo "-it" || echo )" "${did}" ls >/dev/null 2>&1; then
|
||||
run "docker run --rm --name $( get_random_name ) ${args} ${image_name}" "1"
|
||||
>&2 echo "[CHECK IF RUNNING] docker ps"
|
||||
# Check docker ps if running
|
||||
if ! run "docker ps | grep '${name}'" 1>&2; then
|
||||
docker_stop "${name}"
|
||||
>&2 echo "------------------------------ [STARTING CONTAINER] FAILED ------------------------------"
|
||||
return 1
|
||||
fi
|
||||
# Check if we can ls
|
||||
>&2 echo "[CHECK IF RUNNING] docker exec"
|
||||
if ! run "docker exec $(tty -s && echo "-it" || echo ) ${name} id" 1>&2; then
|
||||
docker_stop "${name}"
|
||||
>&2 echo "------------------------------ [STARTING CONTAINER] FAILED ------------------------------"
|
||||
return 1
|
||||
fi
|
||||
>&2 echo "------------------------------ [STARTING CONTAINER] OK ------------------------------"
|
||||
echo "${name}"
|
||||
|
||||
# Only get 8 digits of docker id
|
||||
echo "${did}" | grep -Eo '^[0-9a-zA-Z]{8}'
|
||||
## If it fails, start again without --rm in order to show errors
|
||||
# run "docker logs ${did}" "1" || true
|
||||
# run "docker kill ${did}" "1" || true
|
||||
# run "docker rm -f ${did}" "1" || true
|
||||
# name="$( get_random_name )"
|
||||
# run "docker run -d --platform ${architecture} --name ${name} ${args} ${image_name}" "1"
|
||||
# run "sleep 10" "1"
|
||||
# run "docker logs ${name}" "1" || true
|
||||
# run "docker kill ${name}" "1" || true
|
||||
# run "docker rm -f ${name}" "1" || true
|
||||
# return 1
|
||||
#fi
|
||||
|
||||
## Only get 8 digits of docker id
|
||||
#echo "${did}" | grep -Eo '^[0-9a-zA-Z]{8}'
|
||||
}
|
||||
|
||||
|
||||
@@ -132,9 +180,9 @@ function docker_run() {
|
||||
### Show Docker logs
|
||||
###
|
||||
function docker_logs() {
|
||||
local docker_id="${1}"
|
||||
local name="${1}"
|
||||
|
||||
run "docker logs ${docker_id}"
|
||||
run "docker logs ${name}"
|
||||
}
|
||||
|
||||
|
||||
@@ -142,13 +190,13 @@ function docker_logs() {
|
||||
### Docker exec
|
||||
###
|
||||
function docker_exec() {
|
||||
local did="${1}"
|
||||
local name="${1}"
|
||||
local cmd="${2}"
|
||||
shift
|
||||
shift
|
||||
local args="${*}"
|
||||
|
||||
run "docker exec ${args} $(tty -s && echo '-it' || echo) ${did} ${cmd}"
|
||||
run "docker exec ${args} $(tty -s && echo '-it' || echo) ${name} ${cmd}"
|
||||
}
|
||||
|
||||
|
||||
@@ -156,14 +204,14 @@ function docker_exec() {
|
||||
### Get docker name
|
||||
###
|
||||
function docker_name() {
|
||||
local did="${1}"
|
||||
local name=
|
||||
name="$( docker ps | grep "${did}" | awk '{print $(NF)}' )"
|
||||
|
||||
if [ -z "${name}" ]; then
|
||||
return 1
|
||||
fi
|
||||
local name="${1}"
|
||||
echo "${name}"
|
||||
#name="$( docker ps | grep "${did}" | awk '{print $(NF)}' )"
|
||||
|
||||
#if [ -z "${name}" ]; then
|
||||
# return 1
|
||||
#fi
|
||||
#echo "${name}"
|
||||
}
|
||||
|
||||
|
||||
@@ -171,15 +219,9 @@ function docker_name() {
|
||||
### Stop container
|
||||
###
|
||||
function docker_stop() {
|
||||
local did="${1}"
|
||||
local name=
|
||||
name="$( docker ps --no-trunc --format='{{.ID}} {{.Names}}' | grep "${did}" | head -1 | awk '{print $2}' )"
|
||||
local name="${1}"
|
||||
# Stop
|
||||
run "docker stop ${did} >/dev/null"
|
||||
if docker ps | grep -q "${did}"; then
|
||||
run "docker kill ${did} >/dev/null" || true
|
||||
fi
|
||||
|
||||
# Remove if still exist
|
||||
run "docker rm ${name} >/dev/null 2>&1 || true"
|
||||
run "docker stop ${name}" || true
|
||||
run "docker kill ${name} || true" 2>/dev/null
|
||||
run "docker rm -f ${name} || true" 2>/dev/null
|
||||
}
|
||||
|
||||
@@ -23,76 +23,76 @@ FLAVOUR="${4}"
|
||||
###
|
||||
### Debug == 0
|
||||
###
|
||||
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "${ARCH}" "-e DEBUG_ENTRYPOINT=0" )"
|
||||
|
||||
if ! run_fail "docker logs ${did} 2>&1 | grep 'Debug level'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
print_h2 "DEBUG_ENTRYPOINT=0"
|
||||
if ! name="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "${ARCH}" "-e DEBUG_ENTRYPOINT=0" )"; then
|
||||
exit 1
|
||||
fi
|
||||
if ! run_fail "docker logs ${name} 2>&1 | grep '\[INFO\]'"; then
|
||||
docker_logs "${name}" || true
|
||||
docker_stop "${name}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
if ! run_fail "docker logs ${did} 2>&1 | grep '\[INFO\]'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
if ! run_fail "docker logs ${name} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
|
||||
docker_logs "${name}" || true
|
||||
docker_stop "${name}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
if ! run_fail "docker logs ${did} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
docker_stop "${did}"
|
||||
docker_stop "${name}"
|
||||
|
||||
|
||||
###
|
||||
### Debug == 1
|
||||
###
|
||||
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "${ARCH}" "-e DEBUG_ENTRYPOINT=1" )"
|
||||
|
||||
if ! run "docker logs ${did} 2>&1 | grep 'Debug level: 1'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
print_h2 "DEBUG_ENTRYPOINT=1"
|
||||
if ! name="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "${ARCH}" "-e DEBUG_ENTRYPOINT=1" )"; then
|
||||
exit 1
|
||||
fi
|
||||
if ! run "docker logs ${name} 2>&1 | grep 'Debug level: 1'"; then
|
||||
docker_logs "${name}" || true
|
||||
docker_stop "${name}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
if ! run "docker logs ${did} 2>&1 | grep '\[INFO\]'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
if ! run "docker logs ${name} 2>&1 | grep '\[INFO\]'"; then
|
||||
docker_logs "${name}" || true
|
||||
docker_stop "${name}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
if ! run_fail "docker logs ${did} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
if ! run_fail "docker logs ${name} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
|
||||
docker_logs "${name}" || true
|
||||
docker_stop "${name}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
docker_stop "${did}"
|
||||
docker_stop "${name}"
|
||||
|
||||
|
||||
###
|
||||
### Debug == 2
|
||||
###
|
||||
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2" )"
|
||||
|
||||
if ! run "docker logs ${did} 2>&1 | grep 'Debug level: 2'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
print_h2 "DEBUG_ENTRYPOINT=2"
|
||||
if ! name="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2" )"; then
|
||||
exit 1
|
||||
fi
|
||||
if ! run "docker logs ${name} 2>&1 | grep 'Debug level: 2'"; then
|
||||
docker_logs "${name}" || true
|
||||
docker_stop "${name}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
if ! run "docker logs ${did} 2>&1 | grep '\[INFO\]'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
if ! run "docker logs ${name} 2>&1 | grep '\[INFO\]'"; then
|
||||
docker_logs "${name}" || true
|
||||
docker_stop "${name}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
if ! run_fail "docker logs ${did} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
|
||||
docker_logs "${did}" || true
|
||||
docker_stop "${did}" || true
|
||||
if ! run_fail "docker logs ${name} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
|
||||
docker_logs "${name}" || true
|
||||
docker_stop "${name}" || true
|
||||
echo "Failed"
|
||||
exit 1
|
||||
fi
|
||||
docker_stop "${did}"
|
||||
docker_stop "${name}"
|
||||
|
||||
@@ -48,7 +48,8 @@ if [ "${FLAVOUR}" = "base" ] || [ "${FLAVOUR}" = "mods" ] || [ "${FLAVOUR}" = "p
|
||||
TESTS="$( find "${CWD}" -regex "${CWD}/base/[0-9].+.*\.sh" | sort -u )"
|
||||
for t in ${TESTS}; do
|
||||
printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH}): ${t}"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH})"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "${t} ${IMAGE} ${ARCH} ${VERSION} ${FLAVOUR}"
|
||||
printf "\033[0;33m%s\033[0m\n\n" "################################################################################"
|
||||
time ${t} "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}"
|
||||
done
|
||||
@@ -58,7 +59,8 @@ if [ "${FLAVOUR}" = "mods" ] || [ "${FLAVOUR}" = "prod" ] || [ "${FLAVOUR}" = "w
|
||||
TESTS="$( find "${CWD}" -regex "${CWD}/mods/[0-9].+.*\.sh" | sort -u )"
|
||||
for t in ${TESTS}; do
|
||||
printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH}): ${t}"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH})"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "${t} ${IMAGE} ${ARCH} ${VERSION} ${FLAVOUR}"
|
||||
printf "\033[0;33m%s\033[0m\n\n" "################################################################################"
|
||||
time ${t} "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}"
|
||||
done
|
||||
@@ -68,7 +70,8 @@ if [ "${FLAVOUR}" = "prod" ] || [ "${FLAVOUR}" = "work" ]; then
|
||||
TESTS="$( find "${CWD}" -regex "${CWD}/prod/[0-9].+.*\.sh" | sort -u )"
|
||||
for t in ${TESTS}; do
|
||||
printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH}): ${t}"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH})"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "${t} ${IMAGE} ${ARCH} ${VERSION} ${FLAVOUR}"
|
||||
printf "\033[0;33m%s\033[0m\n\n" "################################################################################"
|
||||
time ${t} "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}"
|
||||
done
|
||||
@@ -78,7 +81,8 @@ if [ "${FLAVOUR}" = "work" ]; then
|
||||
TESTS="$( find "${CWD}" -regex "${CWD}/work/[0-9].+.*\.sh" | sort -u )"
|
||||
for t in ${TESTS}; do
|
||||
printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH}): ${t}"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH})"
|
||||
printf "\033[0;33m%s %s\033[0m\n" "#" "${t} ${IMAGE} ${ARCH} ${VERSION} ${FLAVOUR}"
|
||||
printf "\033[0;33m%s\033[0m\n\n" "################################################################################"
|
||||
time ${t} "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}"
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user