Merge pull request #39068 from thaJeztah/separate_docker_py
Bump docker-py to 4.0.2, and run tests from upstream repository
This commit is contained in:
commit
764160031e
4 changed files with 47 additions and 45 deletions
35
Dockerfile
35
Dockerfile
|
@ -72,17 +72,6 @@ RUN set -x \
|
||||||
esac \
|
esac \
|
||||||
&& rm -rf "$GOPATH"
|
&& rm -rf "$GOPATH"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FROM base AS docker-py
|
|
||||||
# Get the "docker-py" source so we can run their integration tests
|
|
||||||
ENV DOCKER_PY_COMMIT ac922192959870774ad8428344d9faa0555f7ba6
|
|
||||||
RUN git clone https://github.com/docker/docker-py.git /build \
|
|
||||||
&& cd /build \
|
|
||||||
&& git checkout -q $DOCKER_PY_COMMIT
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FROM base AS swagger
|
FROM base AS swagger
|
||||||
# Install go-swagger for validating swagger.yaml
|
# Install go-swagger for validating swagger.yaml
|
||||||
ENV GO_SWAGGER_COMMIT c28258affb0b6251755d92489ef685af8d4ff3eb
|
ENV GO_SWAGGER_COMMIT c28258affb0b6251755d92489ef685af8d4ff3eb
|
||||||
|
@ -93,7 +82,6 @@ RUN set -x \
|
||||||
&& go build -o /build/swagger github.com/go-swagger/go-swagger/cmd/swagger \
|
&& go build -o /build/swagger github.com/go-swagger/go-swagger/cmd/swagger \
|
||||||
&& rm -rf "$GOPATH"
|
&& rm -rf "$GOPATH"
|
||||||
|
|
||||||
|
|
||||||
FROM base AS frozen-images
|
FROM base AS frozen-images
|
||||||
RUN apt-get update && apt-get install -y jq ca-certificates --no-install-recommends
|
RUN apt-get update && apt-get install -y jq ca-certificates --no-install-recommends
|
||||||
# Get useful and necessary Hub images so we can "docker load" locally instead of pulling
|
# Get useful and necessary Hub images so we can "docker load" locally instead of pulling
|
||||||
|
@ -227,25 +215,12 @@ RUN apt-get update && apt-get install -y \
|
||||||
jq \
|
jq \
|
||||||
libcap2-bin \
|
libcap2-bin \
|
||||||
libdevmapper-dev \
|
libdevmapper-dev \
|
||||||
# libffi-dev and libssl-dev appear to be required for compiling paramiko on s390x/ppc64le
|
|
||||||
libffi-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libudev-dev \
|
libudev-dev \
|
||||||
libsystemd-dev \
|
libsystemd-dev \
|
||||||
binutils-mingw-w64 \
|
binutils-mingw-w64 \
|
||||||
g++-mingw-w64-x86-64 \
|
g++-mingw-w64-x86-64 \
|
||||||
net-tools \
|
net-tools \
|
||||||
pigz \
|
pigz \
|
||||||
python-backports.ssl-match-hostname \
|
|
||||||
python-dev \
|
|
||||||
# python-cffi appears to be required for compiling paramiko on s390x/ppc64le
|
|
||||||
python-cffi \
|
|
||||||
python-mock \
|
|
||||||
python-pip \
|
|
||||||
python-requests \
|
|
||||||
python-setuptools \
|
|
||||||
python-websocket \
|
|
||||||
python-wheel \
|
|
||||||
thin-provisioning-tools \
|
thin-provisioning-tools \
|
||||||
vim \
|
vim \
|
||||||
vim-common \
|
vim-common \
|
||||||
|
@ -269,16 +244,6 @@ COPY --from=proxy /build/ /usr/local/bin/
|
||||||
COPY --from=dockercli /build/ /usr/local/cli
|
COPY --from=dockercli /build/ /usr/local/cli
|
||||||
COPY --from=registry /build/registry* /usr/local/bin/
|
COPY --from=registry /build/registry* /usr/local/bin/
|
||||||
COPY --from=criu /build/ /usr/local/
|
COPY --from=criu /build/ /usr/local/
|
||||||
COPY --from=docker-py /build/ /docker-py
|
|
||||||
# TODO: This is for the docker-py tests, which shouldn't really be needed for
|
|
||||||
# this image, but currently CI is expecting to run this image. This should be
|
|
||||||
# split out into a separate image, including all the `python-*` deps installed
|
|
||||||
# above.
|
|
||||||
RUN cd /docker-py \
|
|
||||||
&& pip install docker-pycreds==0.4.0 \
|
|
||||||
&& pip install paramiko==2.4.2 \
|
|
||||||
&& pip install yamllint==1.5.0 \
|
|
||||||
&& pip install -r test-requirements.txt
|
|
||||||
COPY --from=rootlesskit /build/ /usr/local/bin/
|
COPY --from=rootlesskit /build/ /usr/local/bin/
|
||||||
COPY --from=djs55/vpnkit@sha256:e508a17cfacc8fd39261d5b4e397df2b953690da577e2c987a47630cd0c42f8e /vpnkit /usr/local/bin/vpnkit.x86_64
|
COPY --from=djs55/vpnkit@sha256:e508a17cfacc8fd39261d5b4e397df2b953690da577e2c987a47630cd0c42f8e /vpnkit /usr/local/bin/vpnkit.x86_64
|
||||||
|
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -50,9 +50,11 @@ DOCKER_ENVS := \
|
||||||
-e DOCKER_PORT \
|
-e DOCKER_PORT \
|
||||||
-e DOCKER_REMAP_ROOT \
|
-e DOCKER_REMAP_ROOT \
|
||||||
-e DOCKER_STORAGE_OPTS \
|
-e DOCKER_STORAGE_OPTS \
|
||||||
|
-e DOCKER_TEST_HOST \
|
||||||
-e DOCKER_USERLANDPROXY \
|
-e DOCKER_USERLANDPROXY \
|
||||||
-e DOCKERD_ARGS \
|
-e DOCKERD_ARGS \
|
||||||
-e TEST_INTEGRATION_DIR \
|
-e TEST_INTEGRATION_DIR \
|
||||||
|
-e TESTDEBUG \
|
||||||
-e TESTDIRS \
|
-e TESTDIRS \
|
||||||
-e TESTFLAGS \
|
-e TESTFLAGS \
|
||||||
-e TIMEOUT \
|
-e TIMEOUT \
|
||||||
|
|
|
@ -8,7 +8,7 @@ hack/test/unit
|
||||||
hack/make.sh \
|
hack/make.sh \
|
||||||
binary-daemon \
|
binary-daemon \
|
||||||
dynbinary \
|
dynbinary \
|
||||||
|
test-docker-py \
|
||||||
test-integration-flaky \
|
test-integration-flaky \
|
||||||
test-integration \
|
test-integration \
|
||||||
cross \
|
cross
|
||||||
test-docker-py
|
|
||||||
|
|
|
@ -3,18 +3,53 @@ set -e
|
||||||
|
|
||||||
source hack/make/.integration-test-helpers
|
source hack/make/.integration-test-helpers
|
||||||
|
|
||||||
# subshell so that we can export PATH without breaking other things
|
# The commit or tag to use for testing
|
||||||
|
# TODO docker 17.06 cli client used in CI fails to build using a sha;
|
||||||
|
# unable to prepare context: unable to 'git clone' to temporary context directory: error fetching: error: no such remote ref ead0bb9e08c13dd3d1712759491eee06bf5a5602
|
||||||
|
#: exit status 128
|
||||||
|
: ${DOCKER_PY_COMMIT:=4.0.2}
|
||||||
|
|
||||||
|
# custom options to pass py.test
|
||||||
|
# TODO remove these skip once we update to a docker-py version that has https://github.com/docker/docker-py/pull/2369 and https://github.com/docker/docker-py/pull/2380
|
||||||
|
: ${PY_TEST_OPTIONS:="--deselect=tests/integration/api_swarm_test.py::SwarmTest::test_init_swarm_data_path_addr --deselect=tests/integration/api_exec_test.py::ExecTest::test_detach_with_arg --deselect=tests/integration/api_exec_test.py::ExecDemuxTest::test_exec_command_tty_stream_no_demux"}
|
||||||
(
|
(
|
||||||
bundle .integration-daemon-start
|
bundle .integration-daemon-start
|
||||||
|
|
||||||
dockerPy='/docker-py'
|
docker_host_scheme=`echo "${DOCKER_HOST}" | cut -d: -f1 -`
|
||||||
[ -d "$dockerPy" ] || {
|
|
||||||
dockerPy="$DEST/docker-py"
|
|
||||||
git clone https://github.com/docker/docker-py.git "$dockerPy"
|
|
||||||
}
|
|
||||||
|
|
||||||
# exporting PYTHONPATH to import "docker" from our local docker-py
|
case "${docker_host_scheme}" in
|
||||||
test_env PYTHONPATH="$dockerPy" py.test --junitxml="$DEST/results.xml" "$dockerPy/tests/integration"
|
unix)
|
||||||
|
# trim the tcp:// scheme, and bind-mount the docker socket into the container
|
||||||
|
run_opts="-v ${DOCKER_HOST#unix://}:/var/run/docker.sock"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tcp)
|
||||||
|
# run container in host-mode networking so that it can connect to the
|
||||||
|
# daemon from the current networking namespace (e.g., to connect to localhost)
|
||||||
|
run_opts="--network=host -e DOCKER_HOST=${DOCKER_HOST}"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "WARN: Skipping test-docker-py: connecting to docker daemon using ${docker_host_scheme} (${DOCKER_HOST}) not supported"
|
||||||
|
bundle .integration-daemon-stop
|
||||||
|
return 0
|
||||||
|
esac
|
||||||
|
|
||||||
|
docker_py_image="docker-sdk-python3:${DOCKER_PY_COMMIT}"
|
||||||
|
if ! docker image inspect "dockerPyImage" &> /dev/null; then
|
||||||
|
echo INFO: Building ${docker_py_image}...
|
||||||
|
(
|
||||||
|
[ -n "${TESTDEBUG}" ] && set -x
|
||||||
|
[ -z "${TESTDEBUG}" ] && build_opts="--quiet"
|
||||||
|
[ -f /.dockerenv ] || build_opts="${build_opts} --network=host"
|
||||||
|
exec docker build ${build_opts} -t ${docker_py_image} -f tests/Dockerfile "https://github.com/docker/docker-py.git#${DOCKER_PY_COMMIT}"
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo INFO: Starting docker-py tests...
|
||||||
|
(
|
||||||
|
[ -n "${TESTDEBUG}" ] && set -x
|
||||||
|
exec docker run -t --rm ${run_opts} ${docker_py_image} pytest ${PY_TEST_OPTIONS} tests/integration
|
||||||
|
)
|
||||||
bundle .integration-daemon-stop
|
bundle .integration-daemon-stop
|
||||||
) 2>&1 | tee -a "$DEST/test.log"
|
) 2>&1 | tee -a "$DEST/test.log"
|
||||||
|
|
Loading…
Reference in a new issue