From a89aa7f8037592e88c0f4a05473f6182561ce9b5 Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Tue, 16 Oct 2018 10:52:14 +0200 Subject: jenkins-common.sh: add docker_images_require() This new function can be used on top of each *-test/jenkins.sh to automatically build the required Docker images before starting a testsuite. The top-level Makefile should also be able to build all Docker images on which a job depends. But in that Makefile the list of dependencies can not be specified dynamically, as it will be necessary for OS#3268: ttcn3-mgw-test may depend on osmo-mgw-latest or on osmo-mgw-master. This will be used by Idbb708ab16cb71bab5069127945b63388222369e. Related: OS#3268 Change-Id: I0afdf3400282634fca9b31d57eaeedd6b5c28aa1 --- jenkins-common.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/jenkins-common.sh b/jenkins-common.sh index 515479f..f3d6c61 100644 --- a/jenkins-common.sh +++ b/jenkins-common.sh @@ -1,3 +1,22 @@ +docker_image_exists() { + test -n "$(docker images -q "$REPO_USER/$1")" +} + +docker_images_require() { + for i in $@; do + # Trigger image build (cache will be used when up-to-date) + if [ -z "$NO_DOCKER_IMAGE_BUILD" ]; then + echo "Building image: $i (export NO_DOCKER_IMAGE_BUILD=1 to prevent this)" + make -C "../$i" + fi + + # Detect missing images (build skipped/failure) + if ! docker_image_exists "$i"; then + echo "ERROR: missing image: $i" + exit 1 + fi + done +} network_create() { NET=$1 -- cgit v1.2.3