From b0fa13ef3eb74b603c97f85a6542c7eac682aa05 Mon Sep 17 00:00:00 2001 From: Christopher Hubing Date: Tue, 15 Aug 2017 16:36:59 -0400 Subject: [PATCH 1/2] Add Jenkinsfile --- Jenkinsfile | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..a81c0d4 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,88 @@ +node { + + stage 'Checkout' + + checkout scm + + stage 'Acquire util' + + sh 'mkdir -p tmp && mkdir -p bin' + dir('tmp'){ + git([ url: "https://github.internet2.edu/docker/util.git", + credentialsId: "jenkins-github-access-token" ]) + 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{ + sh 'bin/build.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' + + 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" + +} + +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}" + //step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'chubing@internet2.edu', sendToIndividuals: true]) + sh 'exit 1' +} From cd3e1a3eaf3277e296143ea0e8b61b3bd3bafacf Mon Sep 17 00:00:00 2001 From: Christopher Hubing Date: Tue, 15 Aug 2017 16:39:04 -0400 Subject: [PATCH 2/2] Create common.bash --- common.bash | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 common.bash diff --git a/common.bash b/common.bash new file mode 100644 index 0000000..102c6cf --- /dev/null +++ b/common.bash @@ -0,0 +1,5 @@ +registry="docker.io" +maintainer="internet2" +basename="ShibbIdP_ConfigBuilder_Container" +imagename="ShibbIdP_ConfigBuilder_Container" +version="0.1"