From 03061a8792ebdb6553940eefeeac6c494f5042d2 Mon Sep 17 00:00:00 2001
From: Joze RIHTARSIC <joze.rihtarsic@ext.ec.europa.eu>
Date: Tue, 1 Oct 2019 08:18:09 +0200
Subject: [PATCH] update docker images for pushing to dockerhub

---
 .../compose/tomcat-mysql/docker-compose.yml   |  4 +-
 smp-docker/compose/tomcat-mysql/runCompose.sh | 33 ++++++---
 smp-docker/images/build-docker-images.sh      | 71 ++++++++++++++-----
 smp-docker/images/tomcat-mysql/Dockerfile     | 40 +++++------
 smp-docker/images/tomcat-mysql/entrypoint.sh  | 12 ++--
 5 files changed, 102 insertions(+), 58 deletions(-)

diff --git a/smp-docker/compose/tomcat-mysql/docker-compose.yml b/smp-docker/compose/tomcat-mysql/docker-compose.yml
index 1909a54b7..4f04fdbec 100644
--- a/smp-docker/compose/tomcat-mysql/docker-compose.yml
+++ b/smp-docker/compose/tomcat-mysql/docker-compose.yml
@@ -1,8 +1,8 @@
 version: "3.0"
 services:
   tomcat-mysql:
-    image: tomcat_mysql_smp
-    container_name: tomcat_mysql_smp
+    image: smp-tomcat-mysql:${SMP_VERSION}
+    container_name: smp-tomcat-mysql
     volumes:
       - ./properties/db-scripts:/tmp/custom-database-scripts/  # init script.
     ports:
diff --git a/smp-docker/compose/tomcat-mysql/runCompose.sh b/smp-docker/compose/tomcat-mysql/runCompose.sh
index faeb3e80c..930fc9570 100755
--- a/smp-docker/compose/tomcat-mysql/runCompose.sh
+++ b/smp-docker/compose/tomcat-mysql/runCompose.sh
@@ -5,23 +5,36 @@ SML_INIT_DATABASE="../../../smp-webapp/src/main/smp-setup/database-scripts/mysql
 SML_INIT_DATABASE_DATA="../../../smp-webapp/src/main/smp-setup/database-scripts/mysql5innodb-data.sql"
 # soap ui data
 PREFIX="smp-tomcat-mysql"
+SMP_VERSION=
 
-
-
-echo "Working Directory: ${WORKING_DIR}"
-cd "$WORKING_DIR"
 # clear volume and containers - to run  restart from strach 
 
 
 # READ argumnets 
-while getopts i: option
+while getopts i:v: option
 do
   case "${option}"
   in
     i) SML_INIT_DATABASE_DATA=${OPTARG};;
+    v) SMP_VERSION=${OPTARG};;
   esac
 done
 
+
+if [  -z "${SMP_VERSION}" ]
+then
+  # get version from POM file 
+  
+  SMP_VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)"
+  
+fi
+
+echo "SMP version: $SMP_VERSION"
+echo "Working Directory: ${WORKING_DIR}"
+cd "$WORKING_DIR"
+
+
+
 # check if property folder exists if not create it
 if  [ ! -d "./properties/db-scripts/" ]
 then
@@ -36,7 +49,8 @@ cp   "${SML_INIT_DATABASE_DATA}" ./properties/db-scripts/mysql5innodb-data.sql
 
 function clearOldContainers {
   echo "Clear containers and volumes"
-  docker-compose -p "${PREFIX}" rm -s -f -v
+  docker-compose -p "${PREFIX}" rm -s -f -v 
+  echo "Clear containers and volumes"
 }
 
 
@@ -44,9 +58,12 @@ function clearOldContainers {
 # Always delete shared-status-folder else weblogic will start to quick!
 # because statuses are sync over shared-status-folder folders and it could contain status from previous run.
 
+export SMP_VERSION="${SMP_VERSION}"
+echo "Clear old containser"
 clearOldContainers
-# start 
-docker-compose -p ${PREFIX} up -d --force-recreate
+# start " 
+echo "Start compose"
+docker-compose -p ${PREFIX} up -d --force-recreate 
 
 # wait until service is up
 for i in `seq 100`; do timeout 1  bash -c ' curl --head --silent --fail http://localhost:8981/smp/'; if [ $? -eq 0  ] ; then break;fi; echo "$i. Wait for tomcat to start!";  sleep 5;  done;
diff --git a/smp-docker/images/build-docker-images.sh b/smp-docker/images/build-docker-images.sh
index 6b9e175db..ae5bfcfb7 100755
--- a/smp-docker/images/build-docker-images.sh
+++ b/smp-docker/images/build-docker-images.sh
@@ -14,9 +14,7 @@
 # 3. run the scripts with arguments 
 # build-docker-images.sh  -f build-docker-images.sh  -f ${oracle_artefact_folder}
  
-DIRNAME=`dirname "$0"`
-cd "$DIRNAME"
-DIRNAME="$(pwd -P)"
+
 
 ORACLE_DB_FILE="oracle-xe-11.2.0-1.0.x86_64.rpm.zip"
 SERVER_JDK_FILE="server-jre-8u211-linux-x64.tar.gz"
@@ -27,9 +25,14 @@ ORACLE_ARTEFACTS="/CEF/oracle-install"
 SMP_ARTEFACTS="../../smp-webapp/target/"
 SMP_ARTEFACTS_CLEAR="false"
 
+SMP_IMAGE_PUBLISH="false"
+DOCKER_USER=$bamboo_DOCKER_USER
+DOCKER_PASSWORD=$bamboo_DOCKER_PASSWORD
+
+
 
 # READ argumnets 
-while getopts v:o:s:c: option
+while getopts v:o:s:c:p: option
 do
   case "${option}"
   in
@@ -37,19 +40,22 @@ do
     o) ORACLE_ARTEFACTS=${OPTARG};;
     s) SMP_ARTEFACTS=${OPTARG};;
     c) SMP_ARTEFACTS_CLEAR=${OPTARG};;
+    p) SMP_IMAGE_PUBLISH=${OPTARG};;
   esac
 done
 
-if [  -z "${SML_VERSION}" ]
+if [[  -z "${SML_VERSION}" ]]
 then
   # get version from setup file
-  cd "${SMP_ARTEFACTS}"
-  SMP_VERSION="$(ls smp-*-setup.zip | sed -e 's/.*smp-//g' | sed -e 's/-setup\.zip$//g')"
+  #cd "${SMP_ARTEFACTS}"
+  #SMP_VERSION="$(ls smp-*-setup.zip | sed -e 's/.*smp-//g' | sed -e 's/-setup\.zip$//g')"
+  SMP_VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)"
   # go back to dirname
-  cd "$DIRNAME"
 fi
 
-
+DIRNAME=`dirname "$0"`
+cd "$DIRNAME"
+DIRNAME="$(pwd -P)"
 echo "*****************************************************************"
 echo "* SMP artefact folders: $SMP_ARTEFACTS, (Clear folder after build: $SMP_ARTEFACTS_CLEAR )"
 echo "* Build SMP image for version $SMP_VERSION"
@@ -58,13 +64,14 @@ echo "*****************************************************************"
 echo ""
 
 
+
 # -----------------------------------------------------------------------------
 # validate all necessary artefacts and prepare files to build images 
 # -----------------------------------------------------------------------------    
  validateAndPrepareArtefacts() {
    
   # check oracle database
-  if [ ! -f "${ORACLE_ARTEFACTS}/${ORACLE_DB_FILE}" ]
+  if [[ ! -f "${ORACLE_ARTEFACTS}/${ORACLE_DB_FILE}" ]]
   then
     echo "Oracle database artefacts '${ORACLE_ARTEFACTS}/${ORACLE_DB_FILE}' not found."
     exit 1;
@@ -74,7 +81,7 @@ echo ""
   fi
 
   # check server JDK
-  if [ ! -f "${ORACLE_ARTEFACTS}/${SERVER_JDK_FILE}" ]
+  if [[ ! -f "${ORACLE_ARTEFACTS}/${SERVER_JDK_FILE}" ]]
   then
     echo "Server JDK artefacts '${ORACLE_ARTEFACTS}/${SERVER_JDK_FILE}' not found."
     exit 1;
@@ -84,7 +91,7 @@ echo ""
   fi
 
  # check weblogic 
-  if [ ! -f "${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}" ]
+  if [[ ! -f "${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}" ]]
   then
     echo "Weblogic artefacts '${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}' not found."
     exit 1;
@@ -94,14 +101,14 @@ echo ""
   fi
  
 
-  if  [ ! -d "./tomcat-mysql/artefacts/" ]
+  if  [[ ! -d "./tomcat-mysql/artefacts/" ]]
   then
     mkdir -p "./tomcat-mysql/artefacts/"
   fi
     
 
   # SMP artefats 
-  if [ ! -f "${SMP_ARTEFACTS}/smp.war" ]
+  if [[ ! -f "${SMP_ARTEFACTS}/smp.war" ]]
   then
     echo "SMP artefact   '${SMP_ARTEFACTS}/smp.war' not found. Was project built!"
     exit 1;
@@ -114,7 +121,7 @@ echo ""
   fi
 
  # SMP setup zip   
-  if [ ! -f "${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip" ]
+  if [[ ! -f "${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip" ]]
   then
     echo "SMP setup boundle  '${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip' not found. Was project built!"
     exit 1;
@@ -138,7 +145,7 @@ echo ""
     # build docker image for oracle database 
     # -----------------------------------------------------------------------------
     # oracle 1.2.0.2-xe (https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2)
-    docker build -f ./oracle/oracle-db-11.2.0.2/Dockerfile.xe -t oracle/database:11.2.0.2-xe ./oracle/oracle-db-11.2.0.2/
+    docker build -f ./oracle/oracle-db-11.2.0.2/Dockerfile.xe -t "smp-oradb-11.2.0.2-xe:${SMP_VERSION}" ./oracle/oracle-db-11.2.0.2/
 
     # -----------------------------------------------------------------------------
     # build docker image for oracle database 
@@ -156,13 +163,38 @@ echo ""
 
 
     # build SMP deployment.
-    docker build -t weblogic_smp ./weblogic-12.2.1.3-smp/ --build-arg SMP_VERSION="$SMP_VERSION"
+    docker build -t "smp-weblogic-122:${SMP_VERSION}" ./weblogic-12.2.1.3-smp/ --build-arg SMP_VERSION="$SMP_VERSION"
 
     # build tomcat mysql image  deployment.
-    docker build -t tomcat_mysql_smp ./tomcat-mysql/ 
+    docker build -t "smp-tomcat-mysql:${SMP_VERSION}" ./tomcat-mysql/  --build-arg SMP_VERSION=${SMP_VERSION}
 
 }
 
+function pushImageToDockerhub {
+
+   if [[ "V$SMP_IMAGE_PUBLISH" == "Vtrue" ]]
+   then
+       # login to docker
+       docker login --username="${DOCKER_USER}" --password="${DOCKER_PASSWORD}"
+       # push images
+       pushImageIfExisting "smp-tomcat-mysql:${SMP_VERSION}"
+       pushImageIfExisting "smp-weblogic-122:${SMP_VERSION}"
+       pushImageIfExisting "smp-oradb-11.2.0.2-xe:${SMP_VERSION}"
+   fi
+}
+
+
+function pushImageIfExisting {
+  if [[ "x$(docker images -q "${1}")" != "x" ]]; then
+    echo "Pushing image ${1}"
+    docker tag "${1}" "${DOCKER_USER}"/"${1}"
+    docker push "${DOCKER_USER}"/"${1}"
+  else
+    echo "Could not find image ${1} to push!"
+  fi
+  return 0
+}
+
 # -----------------------------------------------------------------------------
 # clean 
 # -----------------------------------------------------------------------------    
@@ -176,7 +208,7 @@ echo ""
   # clear also the tomcat/mysql image  
   rm -rf "./tomcat-mysql/artefacts/*.*"
 
-  if [ "V$SMP_ARTEFACTS_CLEAR" == "Vtrue" ]
+  if [[ "V$SMP_ARTEFACTS_CLEAR" == "Vtrue" ]]
   then
     rm -rf  "${SMP_ARTEFACTS}/smp-setup.zip"
     rm -rf  "${SMP_ARTEFACTS}/smp.war"
@@ -187,5 +219,6 @@ echo ""
 
 validateAndPrepareArtefacts
 buildImages
+pushImageToDockerhub
 cleanArtefacts
 
diff --git a/smp-docker/images/tomcat-mysql/Dockerfile b/smp-docker/images/tomcat-mysql/Dockerfile
index 040cc48cf..404419984 100755
--- a/smp-docker/images/tomcat-mysql/Dockerfile
+++ b/smp-docker/images/tomcat-mysql/Dockerfile
@@ -1,7 +1,7 @@
 FROM ubuntu:18.04
 MAINTAINER Joze Rihtarsic
 
-
+ARG SMP_VERSION
 # Set the SMP_VERSION env variable  \
 ENV SMP_HOME=/opt/smp  \
     MYSQL_DRV_VERSION=5.1.46  \
@@ -14,6 +14,14 @@ ENV SMP_HOME=/opt/smp  \
     DB_USER_PASSWORD=smp  \
     MYSQL_ROOT_PASSWORD=root  
 
+EXPOSE 3306 8080
+
+ENV LANG en_US.utf8
+ADD ./artefacts /tmp/artefacts
+COPY ./entrypoint.sh /sbin/entrypoint.sh  
+VOLUME ["/data"]
+
+
 # install utils, java, mysql   \
 RUN apt-get update \
     && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
@@ -41,29 +49,15 @@ RUN apt-get update \
     && sed -i -e "s/<\/Context>/<Resource name=\"jdbc\/eDeliverySmpDs\" auth=\"Container\" type=\"javax.sql.DataSource\" maxTotal=\"100\" maxIdle=\"30\" maxWaitMillis=\"10000\" username=\"$DB_USER\" password=\"$DB_USER\" driverClassName=\"com.mysql.jdbc.Driver\" url=\"jdbc:mysql:\/\/localhost:3306\/$DB_SCHEMA?useSSL=false\&amp;characterEncoding=UTF-8\&amp;useUnicode=true\"\/><\/Context>/g" "$SMP_HOME/apache-tomcat-$TOMCAT_VERSION/conf/context.xml"  \
     && sed -i -e "s/<Connector /<Connector URIEncoding=\"UTF-8\" /g" "$SMP_HOME/apache-tomcat-$TOMCAT_VERSION/conf/server.xml"  \
     && echo "datasource.jndi=java:comp/env/jdbc/eDeliverySmpDs" >  $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties   \
-     && echo "\nAdd init parameters" >>  $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties   \
-    && echo "\nauthentication.blueCoat.enabled=true" >>  $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties   
-
+    && echo "\nAdd init parameters" >>  $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties   \
+    && echo "\nauthentication.blueCoat.enabled=true" >>  $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties    \
+    && unzip /tmp/artefacts/smp-setup.zip -d /tmp/    \
+    && mv /tmp/smp-$SMP_VERSION/* /tmp/artefacts/ \
+    && rm -rf /tmp/smp-$SMP_VERSION \
+    && mv /tmp/artefacts/smp.war $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/webapps/     \
+    && chmod u+x /sbin/entrypoint.sh \
+    && sed -i -e "s/127.0.0.1/0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf  
 
-RUN curl -o /tmp/org.jacoco.agent.jar  https://repo1.maven.org/maven2/org/jacoco/org.jacoco.agent/0.8.4/org.jacoco.agent-0.8.4-runtime.jar    
-
-# copy application to image 
-ADD ./artefacts /tmp/artefacts
-
-
-# install SMP
-RUN unzip /tmp/artefacts/smp-setup.zip -d /tmp/    \
-    && mv /tmp/artefacts/smp.war $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/webapps/     
-  
-ENV LANG en_US.utf8
- 
-VOLUME ["/data"]
-
-COPY ./entrypoint.sh /sbin/entrypoint.sh 
-RUN chmod u+x /sbin/entrypoint.sh \
-      && sed -i -e "s/127.0.0.1/0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf
-
-EXPOSE 3306 8080
 
 ENTRYPOINT ["/sbin/entrypoint.sh"]
 
diff --git a/smp-docker/images/tomcat-mysql/entrypoint.sh b/smp-docker/images/tomcat-mysql/entrypoint.sh
index f7209d529..01ba5052d 100755
--- a/smp-docker/images/tomcat-mysql/entrypoint.sh
+++ b/smp-docker/images/tomcat-mysql/entrypoint.sh
@@ -71,7 +71,7 @@ init_mysql() {
   echo '[INFO] start MySQL'
   service mysql start
 
-  if [ -d ${MYSQL_DATA_DIR}/${DB_SCHEMA} ]; then
+  if [[ -d ${MYSQL_DATA_DIR}/${DB_SCHEMA} ]]; then
     echo '[INFO] MySQL ${DB_SCHEMA} already present, skipping creation'
   else 
     echo "[INFO] MySQL ${DB_SCHEMA}  not found, creating initial DBs"
@@ -79,22 +79,22 @@ init_mysql() {
     echo 'Create smp database'
     mysql -h localhost -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';drop schema if exists $DB_SCHEMA;DROP USER IF EXISTS $DB_USER;  create schema $DB_SCHEMA;alter database $DB_SCHEMA charset=utf8; create user $DB_USER identified by '$DB_USER_PASSWORD';grant all on $DB_SCHEMA.* to $DB_USER;"
 
-    if [ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ]
+    if [[ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ]]
     then
         echo "Use custom database script! "
         mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "tmp/custom-database-scripts/mysql5innodb.ddl"
     else
-          echo "Use default database ddl script!"
-           mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/smp-4.1.1-SNAPSHOT/database-scripts/mysql5innodb.ddl"        fi
+          echo "Use default database ddl script! test"
+           mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/artefacts/database-scripts/mysql5innodb.ddl"
     fi
 
-    if [ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ]
+    if [[ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ]]
     then
          echo "Use custom init script! "
          mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/custom-database-scripts/mysql5innodb-data.sql"
      else
         echo "Use default init script!"
-         mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/smp-4.1.1-SNAPSHOT/database-scripts/mysql5innodb-data.sql"
+         mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/artefacts/database-scripts/mysql5innodb-data.sql"
     fi
     
   fi
-- 
GitLab