From 44e08dd1fff928ef6dc6812dda0c2a15b7d938ee Mon Sep 17 00:00:00 2001 From: Mason Packard Date: Fri, 12 Aug 2016 15:12:16 -0400 Subject: [PATCH 1/5] 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' +} From b66f0918ad3febd5f6325c9b3314f6c8d6e58b37 Mon Sep 17 00:00:00 2001 From: Mason Packard Date: Fri, 12 Aug 2016 16:00:13 -0400 Subject: [PATCH 2/5] Syntax adjustment --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index bf2945d..899da48 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -27,7 +27,7 @@ node { echo "Building ${maintainer}:${tag} for ${maintainer}" } - sh 'bin/build.sh &> debug' + 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}" From 7f3c8224b9bf6ef3fbfb9e8b063108b8d521c891 Mon Sep 17 00:00:00 2001 From: Mason Packard Date: Fri, 12 Aug 2016 16:10:28 -0400 Subject: [PATCH 3/5] Syntax change --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 899da48..bf2945d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -27,7 +27,7 @@ node { echo "Building ${maintainer}:${tag} for ${maintainer}" } - sh 'bin/build.sh > debug' + 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}" From 94498596143809670af6d1efa80767793f1adb20 Mon Sep 17 00:00:00 2001 From: Mason Packard Date: Fri, 12 Aug 2016 16:25:11 -0400 Subject: [PATCH 4/5] Change format of mailer for error handling in jenkins pipeline. --- Jenkinsfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index bf2945d..ed94faa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,8 +62,6 @@ 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]) - } + step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "$email-error-id", sendToIndividuals: true]) sh 'exit 1' } From 084b6b716e59aee232514cfa16e2c3ceabbaec0b Mon Sep 17 00:00:00 2001 From: Mason Packard Date: Fri, 12 Aug 2016 16:39:19 -0400 Subject: [PATCH 5/5] Add information to the sample and remove the Jenkinsfile. --- Jenkinsfile | 67 ---------------------------------------------- Jenkinsfile.sample | 55 ++++++++++++++++++++++--------------- 2 files changed, 34 insertions(+), 88 deletions(-) delete mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index ed94faa..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,67 +0,0 @@ -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}" - step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "$email-error-id", sendToIndividuals: true]) - sh 'exit 1' -} diff --git a/Jenkinsfile.sample b/Jenkinsfile.sample index fbb9f16..ed94faa 100644 --- a/Jenkinsfile.sample +++ b/Jenkinsfile.sample @@ -3,9 +3,9 @@ node { stage 'Checkout' checkout scm - + stage 'Acquire util' - + sh 'mkdir -p bin' dir('bin'){ git([ url: "https://github.internet2.edu/docker/util.git", @@ -13,33 +13,38 @@ node { sh 'ls' sh 'mv bin/* .' } - + stage 'Build' - - 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}" + 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) } - - sh 'bin/build.sh' - 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") } - + } @@ -51,4 +56,12 @@ def maintainer() { def imagename() { def matcher = readFile('common.bash') =~ 'imagename="(.+)"' matcher ? matcher[0][1] : null -} \ No newline at end of file +} + +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]) + sh 'exit 1' +}