From e1b1b253be9dde910cd49e32c376ddaa489f6775 Mon Sep 17 00:00:00 2001
From: Jim Van Fleet <jim.van.fleet@levvel.io>
Date: Tue, 30 Aug 2016 10:39:50 -0400
Subject: [PATCH] Big upgrades to Jenkinsfile

---
 Jenkinsfile.sample | 67 ++++++++++++++++++++++++++++++----------------
 1 file changed, 44 insertions(+), 23 deletions(-)

diff --git a/Jenkinsfile.sample b/Jenkinsfile.sample
index ed94faa..c4b3931 100644
--- a/Jenkinsfile.sample
+++ b/Jenkinsfile.sample
@@ -5,46 +5,67 @@ node {
     checkout scm
 
   stage 'Acquire util'
-
-    sh 'mkdir -p bin'
-    dir('bin'){
+    
+    sh 'mkdir -p tmp && mkdir -p bin'
+    dir('tmp'){
       git([ url: "https://github.internet2.edu/docker/util.git",
           credentialsId: "jenkins-github-access-token" ])
-      sh 'ls'
-      sh 'mv bin/* .'
+      sh 'mv ./bin/* ../bin/.'
     }
+    sh 'rm -rf tmp'
 
+  stage 'Setting build context'
+  
+    def maintainer = maintainer()
+    def imagename = imagename()
+    def tag
+    
+    // Tag images created on master branch with 'latest'
+    if(env.BRANCH_NAME == "master"){
+      tag = "latest"
+    }else{
+      tag = env.BRANCH_NAME
+    }
+        
+    if(!imagename){
+      echo "You must define an imagename in common.bash"
+      currentBuild.result = 'FAILURE'
+     }
+     if(maintainer){
+      echo "Building ${imagename}:${tag} for ${maintainer}"
+     }
+     
   stage 'Build'
     try{
-      def maintainer = maintainer()
-      def imagename = imagename()
-      def tag = env.BRANCH_NAME
-      if(!imagename){
-        echo "You must define an imagename in common.bash"
-        currentBuild.result = 'FAILURE'
-      }
-      if(maintainer){
-        echo "Building ${maintainer}:${tag} for ${maintainer}"
-      }
-
       sh 'bin/build.sh &> debug'
     } catch(error) {
       def error_details = readFile('./debug');
-      def message = "BUILD ERROR: There was a problem building the Base Image. \n\n ${error_details}"
+      def message = "BUILD ERROR: There was a problem building ${imagename}:${tag}. \n\n ${error_details}"
       sh "rm -f ./debug"
       handleError(message)
     }
+    
   stage 'Tests'
-
-    sh 'bin/test.sh'
-
+  
+    try{
+      sh 'bin/test.sh &> debug'
+    } catch(error) {
+      def error_details = readFile('./debug');
+      def message = "BUILD ERROR: There was a problem building ${imagename}:${tag}. \n\n ${error_details}"
+      sh "rm -f ./debug"
+      handleError(message)
+    }
+    
   stage 'Push'
 
     docker.withRegistry('https://registry.hub.docker.com/',   "dockerhub-$maintainer") {
           def baseImg = docker.build("$maintainer/$imagename")
           baseImg.push("$tag")
     }
-
+    
+  stage 'Notify'
+  
+    slackSend color: 'good', message: "$maintainer/$imagename:$tag pushed to DockerHub"
 
 }
 
@@ -62,6 +83,6 @@ def handleError(String message){
   echo "${message}"
   currentBuild.setResult("FAILED")
   slackSend color: 'danger', message: "${message}"
-  step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "$email-error-id", sendToIndividuals: true])
+  //step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'chris.bynum@levvel.io', sendToIndividuals: true])
   sh 'exit 1'
-}
+}
\ No newline at end of file