diff --git a/Jenkinsfile b/Jenkinsfile index b60b56da9ef..e7b939fc3f6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,54 +7,116 @@ node { List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] mvnEnv.add("MAVEN_OPTS=-Xms256m -Xmx1024m -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 'Documentation' - - dir("jetty-documentation") { + try + { + stage 'Compile' withEnv(mvnEnv) { - sh "mvn clean install" + sh "mvn -B clean install -Dtest=None" } - } - */ - - stage 'Test' - - withEnv(mvnEnv) { - // Run package then test phase / skip main compilation / ignore failures - sh "mvn -B package test -Dmaven.main.skip=true -Dmaven.test.failure.ignore=true" - // Report failures in the jenkins UI - step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml']) + } catch(Exception e) { + notifyBuild("Compile Failure") + throw e } - stage 'Compact3' - - dir("aggregates/jetty-all-compact3") { + try + { + stage 'Javadoc' withEnv(mvnEnv) { - sh "mvn -B -Pcompact3 clean install" + sh "mvn -B javadoc:javadoc" } + } catch(Exception e) { + notifyBuild("Javadoc Failure") + throw e } - /* - stage 'Deploy SNAPSHOT' - - withEnv(mvnEnv) { - sh "mvn -B -Peclipse-release clean compile javadoc:jar source:jar gpg:sign deploy" + 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 + } + + try + { + stage 'Compact3' + + dir("aggregates/jetty-all-compact3") { + withEnv(mvnEnv) { + sh "mvn -B -Pcompact3 clean install" + } + } + } catch(Exception e) { + notifyBuild("Compact3 Failure") + throw e } - */ } + +// 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-") ); +} + +// 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 + } + + // 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