Fix the docker build image workflow 31/59731/2 v1.2.0
authorDileep Ranganathan <dileep.ranganathan@intel.com>
Wed, 8 Aug 2018 13:08:08 +0000 (06:08 -0700)
committerDileep Ranganathan <dileep.ranganathan@intel.com>
Wed, 8 Aug 2018 14:36:35 +0000 (07:36 -0700)
Fixed the Docker build image workflow.

Added seperate tagging for SNAPSHOT-latest and STAGING-latest

There are two docker jobs currently. One produces SNAPSHOT images
and other produces STAGING images. SNAPSHOT images are build from
nexus2 maven snapshots artifacts where as STAGING images are built
from nexus2 maven releases artifacts.

Removed libxml2-utils dependency from docker build image script.
Since the dedicated docker node might be shared by multiple jobs,
apt-get install inside the script might cause conflict and cause
failure of the docker jenkins jobs. Moved the dependency to be part
of the jenkins infrastructure node itself.

Change-Id: Ib33681ade6408a1116a5be84f19d0bf84e188aac
Issue-ID: OPTFRA-301
Signed-off-by: Dileep Ranganathan <dileep.ranganathan@intel.com>
docker/build_image.sh

index 6930c5c..3d9d823 100755 (executable)
@@ -28,6 +28,7 @@ VERSION=$release_version
 SNAPSHOT=$snapshot_version
 STAGING=${release_version}-STAGING
 TIMESTAMP=$(date +"%Y%m%dT%H%M%S")Z
+REPO=""
 
 BUILD_ARGS="--no-cache"
 if [ $HTTP_PROXY ]; then
@@ -43,7 +44,6 @@ function log_ts() {  # Log message with timestamp
 
 function get_artifact_version() {
     log_ts Get Maven Artifact version from pom.xml
-    sudo apt-get install libxml2-utils
     MVN_ARTIFACT_VERSION=`echo -e "setns x=http://maven.apache.org/POM/4.0.0 \n  xpath /x:project/x:version/text() "| xmllint --shell pom.xml | grep content | sed 's/.*content=//'`
     log_ts Maven artifact version for OSDF is $MVN_ARTIFACT_VERSION
     if [[ "$MVN_ARTIFACT_VERSION" =~ SNAPSHOT ]]; then
@@ -63,19 +63,36 @@ function build_image() {
     log_ts ... Built
 }
 
-function tag_image() {
-    log_ts Tagging images: ${IMAGE_NAME}:\{$SNAPSHOT-${TIMESTAMP},$STAGING-${TIMESTAMP},latest\}
+function push_image() {
+    if [[ "$REPO" == snapshots ]]; then
+        push_snapshot_image
+    else
+        push_staging_image
+    fi
+}
+
+
+function push_snapshot_image(){
+    log_ts Tagging images: ${IMAGE_NAME}:\{${SNAPSHOT}-${TIMESTAMP},${SNAPSHOT}-latest\}
     docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:${SNAPSHOT}-${TIMESTAMP}
-    docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:${STAGING}-${TIMESTAMP}
-    docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:latest
+    docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:${SNAPSHOT}-latest
     log_ts ... Tagged images
-}
 
-function push_image(){
-    log_ts Pushing images: ${IMAGE_NAME}:\{$SNAPSHOT-${TIMESTAMP},$STAGING-${TIMESTAMP},latest\}
+    log_ts Pushing images: ${IMAGE_NAME}:\{${SNAPSHOT}-${TIMESTAMP},${SNAPSHOT}-latest\}
     docker push ${IMAGE_NAME}:${SNAPSHOT}-${TIMESTAMP}
+    docker push ${IMAGE_NAME}:${SNAPSHOT}-latest
+    log_ts ... Pushed images
+}
+
+function push_staging_image(){
+    log_ts Tagging images: ${IMAGE_NAME}:\{${STAGING}-${TIMESTAMP},${STAGING}-latest\}
+    docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:${STAGING}-${TIMESTAMP}
+    docker tag ${IMAGE_NAME}:latest ${IMAGE_NAME}:${STAGING}-latest
+    log_ts ... Tagged images
+
+    log_ts Pushing images: ${IMAGE_NAME}:\{${STAGING}-${TIMESTAMP},${STAGING}-latest\}
     docker push ${IMAGE_NAME}:${STAGING}-${TIMESTAMP}
-    docker push ${IMAGE_NAME}:latest
+    docker push ${IMAGE_NAME}:${STAGING}-latest
     log_ts ... Pushed images
 }
 
@@ -84,6 +101,5 @@ function push_image(){
     # Switch to docker build directory
     cd $(dirname $0)
     build_image
-    tag_image
     push_image
 )