From 78544b999b06fcc098c719e09c3c94386a4c8e14 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 15 Aug 2016 13:37:38 -0700 Subject: [PATCH 1/2] Adding email on stage failure --- Jenkinsfile | 109 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 88 insertions(+), 21 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e61f9de6de0..3624e6c7c21 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,32 +9,99 @@ node('linux') { List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] mvnEnv.add("MAVEN_OPTS=-Xms256m -Xmx1024m -XX:MaxPermSize=512m -Djava.awt.headless=true") - stage 'Checkout' - - checkout scm - - stage 'Compile' - - withEnv(mvnEnv) { - sh "mvn -B clean install -Dtest=None" + try + { + stage 'Checkout' + checkout scm + } catch (Exception e) { + notifyBuild("Checkout Failure") + throw e } - stage 'Javadoc' - - withEnv(mvnEnv) { - sh "mvn -B javadoc:javadoc" - } - - stage 'Test' - - timeout(60) { + try + { + stage 'Compile' withEnv(mvnEnv) { - // Run test phase / ignore test failures - sh "mvn -B install -Dmaven.test.failure.ignore=true" - // Report failures in the jenkins UI - step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml']) + sh "mvn -B clean install -Dtest=None" } + } catch(Exception e) { + notifyBuild("Compile Failure") + throw e + } + + try + { + stage 'Javadoc' + withEnv(mvnEnv) { + sh "mvn -B javadoc:javadoc" + } + } catch(Exception e) { + notifyBuild("Javadoc Failure") + throw e + } + + try + { + stage 'Test' + timeout(60) { + withEnv(mvnEnv) { + // Run test phase / ignore test failures + sh "mvn -B install -Dmaven.test.failure.ignore=true" + // Report failures in the jenkins UI + step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml']) + } + if(isUnstable()) + { + notifyBuild("Unstable / Test Errors") + } + } + } catch(Exception e) { + notifyBuild("Test Failure") + throw e } } +def isActiveBranch() +{ + def branchName = "${env.BRANCH_NAME}" + return ( branchName == "master" || + branchName.startsWith("jetty-") || + branchName.startsWith("jenkins-") ); +} + +def isUnstable() +{ + return currentBuild.result == "UNSTABLE" +} + +def notifyBuild(String buildStatus) +{ + if ( !isActiveBranch() ) + { + return + } + + // default the value + buildStatus = buildStatus ?: "UNKNOWN" + + def email = "${env.EMAILADDRESS}" + def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}" + def detail = """

Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]

+

${buildStatus}

+ + + + +
Build${env.BUILD_URL}
Console${env.BUILD_URL}console
Test Report${env.BUILD_URL}testReport/
+ """ + + emailext ( + to: email, + subject: summary, + body: detail + ) + +} + + // vim: et:ts=2:sw=2:ft=groovy From 36ac69338558792ae5c9aeb191f6b7ad1f1f76f1 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 15 Aug 2016 15:18:18 -0700 Subject: [PATCH 2/2] Some Jenkinsfile cleanup --- Jenkinsfile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3624e6c7c21..e17120808ea 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -61,23 +61,28 @@ node('linux') { } } +// True if this build is part of the "active" branches +// for Jetty. def isActiveBranch() { def branchName = "${env.BRANCH_NAME}" return ( branchName == "master" || - branchName.startsWith("jetty-") || - branchName.startsWith("jenkins-") ); + branchName.startsWith("jetty-") ); } +// Test if the Jenkins Pipeline or Step has marked the +// current build as unstable def isUnstable() { return currentBuild.result == "UNSTABLE" } +// Send a notification about the build status def notifyBuild(String buildStatus) { if ( !isActiveBranch() ) { + // don't send notifications on transient branches return }