#!groovy def jdks = ["jdk8", "jdk9"] for (def jdk in jdks) { node { // System Dependent Locations def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' def jdktool = tool name: '${jdk}', 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( time: 15, unit: 'MINUTES' ) { sh "mvn -B clean install -Dtest=None" } } } } catch ( Exception e ) { notifyBuild( "Compile Failure" ) throw e } try { stage( 'Javadoc' ) { withEnv( mvnEnv ) { timeout( time: 20, unit: 'MINUTES' ) { sh "mvn -B javadoc:javadoc" } } } } catch ( Exception e ) { notifyBuild( "Javadoc Failure" ) throw e } try { stage( 'Test' ) { withEnv( mvnEnv ) { timeout( time: 90, unit: 'MINUTES' ) { // Run test phase / ignore test failures sh "mvn -B install -Dmaven.test.failure.ignore=true -Prun-its" // Report failures in the jenkins UI step( [$class : 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'] ) // Collect up the jacoco execution results def jacocoExcludes = // build tools "**/org/eclipse/jetty/ant/**" + ",**/org/eclipse/jetty/maven/**" + ",**/org/eclipse/jetty/jspc/**" + // example code / documentation ",**/org/eclipse/jetty/embedded/**" + ",**/org/eclipse/jetty/asyncrest/**" + ",**/org/eclipse/jetty/demo/**" + // special environments / late integrations ",**/org/eclipse/jetty/gcloud/**" + ",**/org/eclipse/jetty/infinispan/**" + ",**/org/eclipse/jetty/osgi/**" + ",**/org/eclipse/jetty/spring/**" + ",**/org/eclipse/jetty/http/spi/**" + // test classes ",**/org/eclipse/jetty/tests/**" + ",**/org/eclipse/jetty/test/**"; step([$clas s: 'JacocoPublisher', inclusionPattern: '**/org/eclipse/jetty/**/*.class', exclusionPattern: jacocoExcludes, execPatter n: '**/target/jacoco.exec', classPatter n: '**/target/classes', sourcePatter n: '**/src/main/java']) // Report on Maven and Javadoc warnings step([$clas s: 'WarningsPublisher', consoleParsers: [ [parserName: 'Maven'], [parserName: 'JavaDoc'], [parserName: 'JavaC'] ]]) } i f (isUnstable()) { notifyBuild( "Unstable / Test Errors ") } } } } catc h (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 = """
${buildStatus}
Build | ${env.BUILD_URL} |
Console | ${env.BUILD_URL}console |
Test Report | ${env.BUILD_URL}testReport/ |