diff options
| author | Vedang Manerikar <ved.manerikar@gmail.com> | 2022-10-06 15:58:22 +0530 |
|---|---|---|
| committer | Vedang Manerikar <ved.manerikar@gmail.com> | 2022-10-06 16:09:44 +0530 |
| commit | e6d1df44a1a49e9c35c0153bbe219a7303c3d762 (patch) | |
| tree | 8badb2313fb85df4fa56c24a4e2ca7e187162fab | |
| parent | a4905d8352437905e6ba1d923cd24ad260c92030 (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/Makefile | 27 | ||||
| -rw-r--r-- | server/test/docker/.gitignore | 1 |
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 |
