summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile174
1 files changed, 125 insertions, 49 deletions
diff --git a/Makefile b/Makefile
index 551868e..ae6ae34 100644
--- a/Makefile
+++ b/Makefile
@@ -1,100 +1,176 @@
+TEST_API_VERSION ?= 1.41
+TEST_ENGINE_VERSION ?= 20.10
+
+ifeq ($(OS),Windows_NT)
+ PLATFORM := Windows
+else
+ PLATFORM := $(shell sh -c 'uname -s 2>/dev/null || echo Unknown')
+endif
+
+ifeq ($(PLATFORM),Linux)
+ uid_args := "--build-arg uid=$(shell id -u) --build-arg gid=$(shell id -g)"
+endif
+
.PHONY: all
all: test
.PHONY: clean
clean:
- -docker rm -f dpy-dind-py2 dpy-dind-py3 dpy-dind-certs dpy-dind-ssl
+ -docker rm -f dpy-dind-py3 dpy-dind-certs dpy-dind-ssl
find -name "__pycache__" | xargs rm -rf
-.PHONY: build
-build:
- docker build -t docker-sdk-python -f tests/Dockerfile --build-arg PYTHON_VERSION=2.7 --build-arg APT_MIRROR .
+.PHONY: build-dind-ssh
+build-dind-ssh:
+ docker build \
+ --pull \
+ -t docker-dind-ssh \
+ -f tests/Dockerfile-ssh-dind \
+ --build-arg ENGINE_VERSION=${TEST_ENGINE_VERSION} \
+ --build-arg API_VERSION=${TEST_API_VERSION} \
+ --build-arg APT_MIRROR .
.PHONY: build-py3
build-py3:
- docker build -t docker-sdk-python3 -f tests/Dockerfile --build-arg APT_MIRROR .
+ docker build \
+ --pull \
+ -t docker-sdk-python3 \
+ -f tests/Dockerfile \
+ --build-arg APT_MIRROR .
.PHONY: build-docs
build-docs:
- docker build -t docker-sdk-python-docs -f Dockerfile-docs --build-arg uid=$(shell id -u) --build-arg gid=$(shell id -g) .
+ docker build -t docker-sdk-python-docs -f Dockerfile-docs $(uid_args) .
.PHONY: build-dind-certs
build-dind-certs:
docker build -t dpy-dind-certs -f tests/Dockerfile-dind-certs .
.PHONY: test
-test: flake8 unit-test unit-test-py3 integration-dind integration-dind-ssl
-
-.PHONY: unit-test
-unit-test: build
- docker run -t --rm docker-sdk-python py.test tests/unit
+test: flake8 unit-test-py3 integration-dind integration-dind-ssl
.PHONY: unit-test-py3
unit-test-py3: build-py3
docker run -t --rm docker-sdk-python3 py.test tests/unit
-.PHONY: integration-test
-integration-test: build
- docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock docker-sdk-python py.test -v tests/integration/${file}
-
.PHONY: integration-test-py3
integration-test-py3: build-py3
docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock docker-sdk-python3 py.test -v tests/integration/${file}
-TEST_API_VERSION ?= 1.35
-TEST_ENGINE_VERSION ?= 19.03.5
-
.PHONY: setup-network
setup-network:
docker network inspect dpy-tests || docker network create dpy-tests
.PHONY: integration-dind
-integration-dind: integration-dind-py2 integration-dind-py3
-
-.PHONY: integration-dind-py2
-integration-dind-py2: build setup-network
- docker rm -vf dpy-dind-py2 || :
- docker run -d --network dpy-tests --name dpy-dind-py2 --privileged\
- docker:${TEST_ENGINE_VERSION}-dind dockerd -H tcp://0.0.0.0:2375 --experimental
- docker run -t --rm --env="DOCKER_HOST=tcp://dpy-dind-py2:2375" --env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}"\
- --network dpy-tests docker-sdk-python py.test tests/integration
- docker rm -vf dpy-dind-py2
+integration-dind: integration-dind-py3
.PHONY: integration-dind-py3
integration-dind-py3: build-py3 setup-network
docker rm -vf dpy-dind-py3 || :
- docker run -d --network dpy-tests --name dpy-dind-py3 --privileged\
- docker:${TEST_ENGINE_VERSION}-dind dockerd -H tcp://0.0.0.0:2375 --experimental
- docker run -t --rm --env="DOCKER_HOST=tcp://dpy-dind-py3:2375" --env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}"\
- --network dpy-tests docker-sdk-python3 py.test tests/integration
+
+ docker run \
+ --detach \
+ --name dpy-dind-py3 \
+ --network dpy-tests \
+ --pull=always \
+ --privileged \
+ docker:${TEST_ENGINE_VERSION}-dind \
+ dockerd -H tcp://0.0.0.0:2375 --experimental
+
+ # Wait for Docker-in-Docker to come to life
+ docker run \
+ --network dpy-tests \
+ --rm \
+ --tty \
+ busybox \
+ sh -c 'while ! nc -z dpy-dind-py3 2375; do sleep 1; done'
+
+ docker run \
+ --env="DOCKER_HOST=tcp://dpy-dind-py3:2375" \
+ --env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}" \
+ --network dpy-tests \
+ --rm \
+ --tty \
+ docker-sdk-python3 \
+ py.test tests/integration/${file}
+
docker rm -vf dpy-dind-py3
+
+.PHONY: integration-dind-ssh
+integration-dind-ssh: build-dind-ssh build-py3 setup-network
+ docker rm -vf dpy-dind-ssh || :
+ docker run -d --network dpy-tests --name dpy-dind-ssh --privileged \
+ docker-dind-ssh dockerd --experimental
+ # start SSH daemon for known key
+ docker exec dpy-dind-ssh sh -c "/usr/sbin/sshd -h /etc/ssh/known_ed25519 -p 22"
+ docker exec dpy-dind-ssh sh -c "/usr/sbin/sshd -h /etc/ssh/unknown_ed25519 -p 2222"
+ docker run \
+ --tty \
+ --rm \
+ --env="DOCKER_HOST=ssh://dpy-dind-ssh" \
+ --env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}" \
+ --env="UNKNOWN_DOCKER_SSH_HOST=ssh://dpy-dind-ssh:2222" \
+ --network dpy-tests \
+ docker-sdk-python3 py.test tests/ssh/${file}
+ docker rm -vf dpy-dind-ssh
+
+
.PHONY: integration-dind-ssl
-integration-dind-ssl: build-dind-certs build build-py3
+integration-dind-ssl: build-dind-certs build-py3 setup-network
docker rm -vf dpy-dind-certs dpy-dind-ssl || :
docker run -d --name dpy-dind-certs dpy-dind-certs
- docker run -d --env="DOCKER_HOST=tcp://localhost:2375" --env="DOCKER_TLS_VERIFY=1"\
- --env="DOCKER_CERT_PATH=/certs" --volumes-from dpy-dind-certs --name dpy-dind-ssl\
- --network dpy-tests --network-alias docker -v /tmp --privileged\
- docker:${TEST_ENGINE_VERSION}-dind\
- dockerd --tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/server-cert.pem\
- --tlskey=/certs/server-key.pem -H tcp://0.0.0.0:2375 --experimental
- docker run -t --rm --volumes-from dpy-dind-ssl --env="DOCKER_HOST=tcp://docker:2375"\
- --env="DOCKER_TLS_VERIFY=1" --env="DOCKER_CERT_PATH=/certs" --env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}"\
- --network dpy-tests docker-sdk-python py.test tests/integration
- docker run -t --rm --volumes-from dpy-dind-ssl --env="DOCKER_HOST=tcp://docker:2375"\
- --env="DOCKER_TLS_VERIFY=1" --env="DOCKER_CERT_PATH=/certs" --env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}"\
- --network dpy-tests docker-sdk-python3 py.test tests/integration
+
+ docker run \
+ --detach \
+ --env="DOCKER_CERT_PATH=/certs" \
+ --env="DOCKER_HOST=tcp://localhost:2375" \
+ --env="DOCKER_TLS_VERIFY=1" \
+ --name dpy-dind-ssl \
+ --network dpy-tests \
+ --network-alias docker \
+ --pull=always \
+ --privileged \
+ --volume /tmp \
+ --volumes-from dpy-dind-certs \
+ docker:${TEST_ENGINE_VERSION}-dind \
+ dockerd \
+ --tlsverify \
+ --tlscacert=/certs/ca.pem \
+ --tlscert=/certs/server-cert.pem \
+ --tlskey=/certs/server-key.pem \
+ -H tcp://0.0.0.0:2375 \
+ --experimental
+
+ # Wait for Docker-in-Docker to come to life
+ docker run \
+ --network dpy-tests \
+ --rm \
+ --tty \
+ busybox \
+ sh -c 'while ! nc -z dpy-dind-ssl 2375; do sleep 1; done'
+
+ docker run \
+ --env="DOCKER_CERT_PATH=/certs" \
+ --env="DOCKER_HOST=tcp://docker:2375" \
+ --env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}" \
+ --env="DOCKER_TLS_VERIFY=1" \
+ --network dpy-tests \
+ --rm \
+ --volumes-from dpy-dind-ssl \
+ --tty \
+ docker-sdk-python3 \
+ py.test tests/integration/${file}
+
docker rm -vf dpy-dind-ssl dpy-dind-certs
.PHONY: flake8
-flake8: build
- docker run -t --rm docker-sdk-python flake8 docker tests
+flake8: build-py3
+ docker run -t --rm docker-sdk-python3 flake8 docker tests
.PHONY: docs
docs: build-docs
docker run --rm -t -v `pwd`:/src docker-sdk-python-docs sphinx-build docs docs/_build
.PHONY: shell
-shell: build
- docker run -it -v /var/run/docker.sock:/var/run/docker.sock docker-sdk-python python
+shell: build-py3
+ docker run -it -v /var/run/docker.sock:/var/run/docker.sock docker-sdk-python3 python