node { // System Dependent Locations def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' def jdktool = tool name: 'jdk8', type: 'hudson.model.JDK' // Environment 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") try { stage 'Checkout' checkout scm } catch (Exception e) { notifyBuild("Checkout Failure") throw e } try { stage 'Compile' withEnv(mvnEnv) { timeout(15) { sh "mvn -B clean install -Dtest=None" } } } catch(Exception e) { notifyBuild("Compile Failure") throw e } try { stage 'Javadoc' withEnv(mvnEnv) { timeout(15) { sh "mvn -B javadoc:javadoc" } } } catch(Exception e) { notifyBuild("Javadoc Failure") throw e } try { stage 'Test' withEnv(mvnEnv) { timeout(60) { // 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