aaf84dd4cf
Dockerfile.e2e is not used anymore. Integration tests run
through the main Dockerfile.
Also removes the daemon OS/Arch detection script that is not
necessary anymore. It was used to select the Dockerfile based
on the arch like Dockerfile.arm64 but we don't have those
anymore. Was also used to check referenced frozen images
in the Dockerfile.
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
(cherry picked from commit 5efe72415d
)
Signed-off-by: Bjorn Neergaard <bjorn.neergaard@docker.com>
157 lines
4.7 KiB
Bash
157 lines
4.7 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# see test-integration for example usage of this script
|
|
|
|
base="$ABS_DEST/.."
|
|
export PATH="$base/dynbinary-daemon:$base/binary-daemon:$PATH"
|
|
|
|
if [ -z "$TEST_CLIENT_BINARY" ]; then
|
|
export TEST_CLIENT_BINARY=docker
|
|
fi
|
|
if [ -n "$DOCKER_CLI_PATH" ]; then
|
|
# /usr/local/cli is a bind mount to the base dir of DOCKER_CLI_PATH (if used)
|
|
export TEST_CLIENT_BINARY=/usr/local/cli/$(basename "$DOCKER_CLI_PATH")
|
|
fi
|
|
|
|
echo "Using test binary $TEST_CLIENT_BINARY"
|
|
if ! command -v "$TEST_CLIENT_BINARY" &> /dev/null; then
|
|
echo >&2 'error: missing test client $TEST_CLIENT_BINARY'
|
|
false
|
|
fi
|
|
|
|
# This is a temporary hack for split-binary mode. It can be removed once
|
|
# https://github.com/docker/docker/pull/22134 is merged into docker master
|
|
if [ "$(go env GOOS)" = 'windows' ]; then
|
|
return
|
|
fi
|
|
|
|
if [ -z "$DOCKER_TEST_HOST" ]; then
|
|
if docker version &> /dev/null; then
|
|
echo >&2 'skipping daemon start, since daemon appears to be already started'
|
|
return
|
|
fi
|
|
fi
|
|
|
|
if ! command -v dockerd &> /dev/null; then
|
|
echo >&2 'error: binary-daemon or dynbinary-daemon must be run before .integration-daemon-start'
|
|
false
|
|
fi
|
|
|
|
# intentionally open a couple bogus file descriptors to help test that they get scrubbed in containers
|
|
exec 41>&1 42>&2
|
|
|
|
# Allow pushing manifest v2 schema 1 images, as they're used to push
|
|
# images to our test-registries for testing _pulling_ schema 2v1 images.
|
|
export DOCKER_ALLOW_SCHEMA1_PUSH_DONOTUSE=1
|
|
export DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
|
|
export DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-true}
|
|
|
|
# example usage: DOCKER_STORAGE_OPTS="dm.basesize=20G,dm.loopdatasize=200G"
|
|
storage_params=""
|
|
if [ -n "$DOCKER_STORAGE_OPTS" ]; then
|
|
IFS=','
|
|
for i in ${DOCKER_STORAGE_OPTS}; do
|
|
storage_params="--storage-opt $i $storage_params"
|
|
done
|
|
unset IFS
|
|
fi
|
|
|
|
# example usage: DOCKER_REMAP_ROOT=default
|
|
extra_params=""
|
|
if [ "$DOCKER_REMAP_ROOT" ]; then
|
|
extra_params="--userns-remap $DOCKER_REMAP_ROOT"
|
|
fi
|
|
|
|
# example usage: DOCKER_EXPERIMENTAL=1
|
|
if [ "$DOCKER_EXPERIMENTAL" ]; then
|
|
echo >&2 '# DOCKER_EXPERIMENTAL is set: starting daemon with experimental features enabled! '
|
|
extra_params="$extra_params --experimental"
|
|
fi
|
|
|
|
dockerd="dockerd"
|
|
if [ -f "/sys/fs/cgroup/cgroup.controllers" ]; then
|
|
if [ -z "$TEST_SKIP_INTEGRATION_CLI" ]; then
|
|
echo >&2 '# cgroup v2 requires TEST_SKIP_INTEGRATION_CLI to be set'
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ -n "$DOCKER_ROOTLESS" ]; then
|
|
if [ -z "$TEST_SKIP_INTEGRATION_CLI" ]; then
|
|
echo >&2 '# DOCKER_ROOTLESS requires TEST_SKIP_INTEGRATION_CLI to be set'
|
|
exit 1
|
|
fi
|
|
user="unprivilegeduser"
|
|
uid=$(id -u $user)
|
|
# shellcheck disable=SC2174
|
|
mkdir -p -m 700 "/tmp/docker-${uid}"
|
|
chown "$user" "/tmp/docker-${uid}"
|
|
chmod -R o+w "$DEST"
|
|
dockerd="sudo -u $user -E -E XDG_RUNTIME_DIR=/tmp/docker-${uid} -E HOME=/home/${user} -E PATH=$PATH -- dockerd-rootless.sh"
|
|
fi
|
|
|
|
if [ -z "$DOCKER_TEST_HOST" ]; then
|
|
# Start apparmor if it is enabled
|
|
if [ -e "/sys/module/apparmor/parameters/enabled" ] && [ "$(cat /sys/module/apparmor/parameters/enabled)" == "Y" ]; then
|
|
# reset container variable so apparmor profile is applied to process
|
|
# see https://github.com/docker/libcontainer/blob/master/apparmor/apparmor.go#L16
|
|
export container=""
|
|
(
|
|
[ -n "$TESTDEBUG" ] && set -x
|
|
/etc/init.d/apparmor start
|
|
)
|
|
fi
|
|
|
|
# "pwd" tricks to make sure $DEST is an absolute path, not a relative one
|
|
export DOCKER_HOST="unix://$(cd "$DEST" && pwd)/docker.sock"
|
|
(
|
|
echo "Starting dockerd"
|
|
[ -n "$TESTDEBUG" ] && set -x
|
|
exec \
|
|
${dockerd} --debug \
|
|
--host "$DOCKER_HOST" \
|
|
--storage-driver "$DOCKER_GRAPHDRIVER" \
|
|
--pidfile "$DEST/docker.pid" \
|
|
--userland-proxy="$DOCKER_USERLANDPROXY" \
|
|
${storage_params} \
|
|
${extra_params} \
|
|
&> "$DEST/docker.log"
|
|
) &
|
|
else
|
|
export DOCKER_HOST="$DOCKER_TEST_HOST"
|
|
fi
|
|
|
|
# give it a little time to come up so it's "ready"
|
|
tries=60
|
|
echo "INFO: Waiting for daemon to start..."
|
|
while ! ${TEST_CLIENT_BINARY} version &> /dev/null; do
|
|
((tries--))
|
|
if [ $tries -le 0 ]; then
|
|
printf "\n"
|
|
if [ -z "$DOCKER_HOST" ]; then
|
|
echo >&2 "error: daemon failed to start"
|
|
echo >&2 " check $DEST/docker.log for details"
|
|
else
|
|
echo >&2 "error: daemon at $DOCKER_HOST fails to '$TEST_CLIENT_BINARY version':"
|
|
${TEST_CLIENT_BINARY} version >&2 || true
|
|
# Additional Windows CI debugging as this is a common error as of
|
|
# January 2016
|
|
if [ "$(go env GOOS)" = 'windows' ]; then
|
|
echo >&2 "Container log below:"
|
|
echo >&2 "---"
|
|
# Important - use the docker on the CI host, not the one built locally
|
|
# which is currently in our path.
|
|
! /c/bin/docker -H=$MAIN_DOCKER_HOST logs docker-$COMMITHASH
|
|
echo >&2 "---"
|
|
fi
|
|
fi
|
|
false
|
|
fi
|
|
printf "."
|
|
sleep 2
|
|
done
|
|
printf "\n"
|
|
|
|
if [ "$(docker version --format '{{ .Server.Os }}')" != 'windows' ]; then
|
|
bundle .build-empty-images
|
|
fi
|