From 742ac796608b5577fe259600bd4a1572da11ab22 Mon Sep 17 00:00:00 2001 From: Jim Van Fleet Date: Tue, 30 Aug 2016 10:46:32 -0400 Subject: [PATCH] Upgrading Jenkinsfile --- Jenkinsfile | 59 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a09cdea..1cfdfa3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -6,48 +6,67 @@ node { 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/.' } - - stage 'Build' - + 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 ${maintainer}:${tag} for ${maintainer}" - } + } + if(maintainer){ + echo "Building ${imagename}:${tag} for ${maintainer}" + } + + stage 'Build' - sh 'bin/rebuild.sh' + try{ + sh 'bin/rebuild.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 '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-bigfleet') { + 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" } @@ -59,4 +78,12 @@ def maintainer() { def imagename() { def matcher = readFile('common.bash') =~ 'imagename="(.+)"' matcher ? matcher[0][1] : null +} + +def handleError(String message){ + echo "${message}" + currentBuild.setResult("FAILED") + slackSend color: 'danger', message: "${message}" + //step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'chris.bynum@levvel.io', sendToIndividuals: true]) + sh 'exit 1' } \ No newline at end of file