From 44e08dd1fff928ef6dc6812dda0c2a15b7d938ee Mon Sep 17 00:00:00 2001 From: Mason Packard Date: Fri, 12 Aug 2016 15:12:16 -0400 Subject: [PATCH] Setup Jenkinsfile for pipeline. --- Jenkinsfile | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..bf2945d --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,69 @@ +node { + + stage 'Checkout' + + checkout scm + + stage 'Acquire util' + + sh 'mkdir -p bin' + dir('bin'){ + git([ url: "https://github.internet2.edu/docker/util.git", + credentialsId: "jenkins-github-access-token" ]) + sh 'ls' + sh 'mv bin/* .' + } + + 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}" + sh "rm -f ./debug" + handleError(message) + } + stage 'Tests' + + sh 'bin/test.sh' + + stage 'Push' + + docker.withRegistry('https://registry.hub.docker.com/', "dockerhub-$maintainer") { + def baseImg = docker.build("$maintainer/$imagename") + baseImg.push("$tag") + } + + +} + +def maintainer() { + def matcher = readFile('common.bash') =~ 'maintainer="(.+)"' + matcher ? matcher[0][1] : 'tier' +} + +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}" + withCredentials([[$class: 'FileBinding', credentialsId: 'email-error-id', variable: 'EMAIL']]) { + step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'EMAIL', sendToIndividuals: true]) + } + sh 'exit 1' +}