summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVedang Manerikar <ved.manerikar@gmail.com>2022-10-06 15:58:22 +0530
committerVedang Manerikar <ved.manerikar@gmail.com>2022-10-06 16:09:44 +0530
commite6d1df44a1a49e9c35c0153bbe219a7303c3d762 (patch)
tree8badb2313fb85df4fa56c24a4e2ca7e187162fab
parenta4905d8352437905e6ba1d923cd24ad260c92030 (diff)
Speed up server testing by keeping the containers around
This allows re-using containers, saving a tremendous amount of time. The drawback here is that any environment change (on the docker / podman containers side) is not detected. The way to deal with this will be to create a process around major releases where I delete all the containers and re-test from scratch. Relates to: #130
-rw-r--r--server/test/Makefile27
-rw-r--r--server/test/docker/.gitignore1
2 files changed, 19 insertions, 9 deletions
diff --git a/server/test/Makefile b/server/test/Makefile
index 4946458..12b18ec 100644
--- a/server/test/Makefile
+++ b/server/test/Makefile
@@ -7,12 +7,14 @@ DOCKER_OS = $(patsubst %.Dockerfile.in, %, \
$(notdir $(wildcard docker/templates/*.Dockerfile.in)))
# Arguments to pass to docker build .
-DOCKER_BUILD_ARGS = -q
+DOCKER_BUILD_ARGS = -q -t
# Advice make not to delete these "intermediate" files.
-.PRECIOUS: docker/%.Dockerfile docker/.%.build
+.PRECIOUS: docker/%.Dockerfile docker/.%.build docker/.%.container
-.PHONY: all test check docker/build
+# Avoid conflicts with real files
+SUBDIRS = docker
+.PHONY: subdirs $(SUBDIRS)
all: docker/test
test: docker/test
@@ -24,16 +26,22 @@ docker/%.Dockerfile: docker/templates/%.Dockerfile.in \
@echo Creating Dockerfile for target $*
cat $^ > $@
-# Build the Dockerfile
+# Build the Docker Image
docker/.%.build: docker/%.Dockerfile ../autobuild docker/lib
- @echo Building target $*
- podman image build $(DOCKER_BUILD_ARGS) -t epdfinfo/$* -f $< ../ || exit 0
+ @echo Building target image $*
+ podman image build $(DOCKER_BUILD_ARGS) epdfinfo/$* -f $< ../
touch $@
-# Run the Dockerfile
-docker/%: docker/.%.build
+# Build the Docker Container
+docker/.%.container: docker/.%.build
+ @echo Building target container $*
+ podman container create $(DOCKER_BUILD_ARGS) --name epdfinfo-$* epdfinfo/$*
+ touch $@
+
+# Run the Containers generated by the dockerfile
+docker/%: docker/.%.container
@echo Running tests on target $*
- podman container run --rm --name epdfinfo-$* epdfinfo/$*
+ podman container start -a epdfinfo-$*
# Run all Dockerfiles
docker/test: docker/build $(patsubst %, docker/%, $(DOCKER_OS))
@@ -49,6 +57,7 @@ docker/clean: $(patsubst %, docker/.%.clean, $(DOCKER_OS))
clean: docker/clean
rm -f -- docker/.[^.]*.build
+ rm -f -- docker/.[^.]*.container
rm -f -- docker/*.Dockerfile
print:
diff --git a/server/test/docker/.gitignore b/server/test/docker/.gitignore
index a6d9461..d7dc318 100644
--- a/server/test/docker/.gitignore
+++ b/server/test/docker/.gitignore
@@ -1,2 +1,3 @@
*.Dockerfile
*.build
+*.container