From b79554f3b9884e4b17ba4655a2699f736b67193c Mon Sep 17 00:00:00 2001 From: Alex Mukha Date: Thu, 9 Jul 2020 14:04:53 +0100 Subject: [PATCH] Add docker images verification --- .travis.yml | 12 +++++++++++- scripts/test-image.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100755 scripts/test-image.sh diff --git a/.travis.yml b/.travis.yml index 489f06bec..cfc87c8b7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -82,4 +82,14 @@ jobs: install: - travis_retry travis_wait 60 mvn --batch-mode -q clean package -DskipTests script: - - travis_wait 60 mvn -q verify -Dtest=foo -DfailIfNoTests=false -Dtests.timezone=UTC -Dmaven.test.failure.ignore=true -pl '"!:search-analytics-e2e-test"' \ No newline at end of file + - travis_wait 60 mvn -q verify -Dtest=foo -DfailIfNoTests=false -Dtests.timezone=UTC -Dmaven.test.failure.ignore=true -pl '"!:search-analytics-e2e-test"' + - name: "Build and verify Docker images" + jdk: openjdk11 + install: + - travis_retry travis_wait 60 mvn --batch-mode -q clean package -DskipTests + - docker login quay.io -u ${QUAY_USERNAME} -p ${QUAY_PASSWORD} + - travis_retry travis_wait 40 docker build -t quay.io/alfresco/search-services:latest search-services/packaging/target/docker-resources + - travis_retry travis_wait 40 docker build -t quay.io/alfresco/insight-engine:latest insight-engine/packaging/target/docker-resources + - travis_retry travis_wait 40 docker build -t quay.io/alfresco/insight-zeppelin:latest insight-engine/alfresco-insight-zeppelin/target/docker-resources + script: + - travis_wait 60 ./scripts/test-image.sh "${TRAVIS_BUILD_DIR}" "search-services/packaging/target/docker-resources insight-engine/packaging/target/docker-resources insight-engine/alfresco-insight-zeppelin/target/docker-resources" "quay.io/alfresco/search-services quay.io/alfresco/insight-engine quay.io/alfresco/insight-zeppelin" "latest" "alfresco-search-services alfresco-insight-engine zeppelin" \ No newline at end of file diff --git a/scripts/test-image.sh b/scripts/test-image.sh new file mode 100755 index 000000000..a666d14eb --- /dev/null +++ b/scripts/test-image.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -eux + +# Sanity test of the docker images. + +# The root directory of the project. +PROJECT_DIRECTORY=$1 +# The relative paths to the dockerfiles. +DOCKER_RESOURCE_HOMES=($2) +# Names of the Docker images to test. +IMAGE_NAMES=($3) +# The version of the image. +IMAGE_VERSION=$4 +# The directories (within /opt) on the images that our products should have been installed in. +DIST_DIRS=($5) + +# The number of projects being processed. +COUNT=${#IMAGE_NAMES[@]} + +for (( i = 0; i < $COUNT; i++ )) +do + IMAGE_NAME=${IMAGE_NAMES[$i]} + DOCKER_RESOURCE_HOME=${DOCKER_RESOURCE_HOMES[$i]} + # There is a variable called DIST_DIR in the image, so use something different. + DIR=${DIST_DIRS[$i]} + + DOCKER_IMAGE_VERSIONED="$IMAGE_NAME:$IMAGE_VERSION" + + cd "$PROJECT_DIRECTORY/$DOCKER_RESOURCE_HOME" + + if [ "$DIR" != "zeppelin" ] + then + docker run --rm $DOCKER_IMAGE_VERSIONED [ -d /opt/$DIR/solr ] || (echo "solr dir does not exist" && exit 1) + docker run --rm $DOCKER_IMAGE_VERSIONED [ -d /opt/$DIR/data/alfrescoModels ] || (echo "alfrescoModels dir does not exist" && exit 1) + docker run --rm $DOCKER_IMAGE_VERSIONED [ -e /opt/$DIR/solr.in.sh ] || (echo "solr.in.sh does not exist" && exit 1) + docker run --rm $DOCKER_IMAGE_VERSIONED grep -q Alfresco /opt/$DIR/solr.in.sh || (echo "solr.in.sh does not contain Alfresco config" && exit 1) + docker run --rm $DOCKER_IMAGE_VERSIONED grep -q Alfresco /opt/$DIR/solr.in.cmd || (echo "solr.in.cmd does not contain Alfresco config" && exit 1) + docker run --rm $DOCKER_IMAGE_VERSIONED grep -q LOG4J_PROPS /opt/$DIR/solr.in.sh || (echo "solr.in.sh does not contain LOG4J_PROPS" && exit 1) + docker run --rm $DOCKER_IMAGE_VERSIONED grep -q LOG4J_CONFIG /opt/$DIR/solr.in.cmd || (echo "solr.in.cmd does not contain LOG4J_CONFIG" && exit 1) + docker run --rm $DOCKER_IMAGE_VERSIONED [ -e /opt/$DIR/solrhome/conf/shared.properties ] || (echo "shared.properties does not exist" && exit 1) + docker run --rm $DOCKER_IMAGE_VERSIONED /opt/$DIR/solr/bin/solr start + fi +done