| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| properties([buildDiscarder(logRotator(artifactNumToKeepStr: '5', numToKeepStr: env.BRANCH_NAME=='master'?'10':'5'))]) |
| |
| def buildOs = 'linux' |
| def buildJdk = '7' |
| def buildMvn = '3.5.0' |
| def tests |
| def CORE_IT_PROFILES='run-its,embedded' |
| |
| try { |
| |
| node(jenkinsEnv.labelForOS(buildOs)) { |
| dir('build') { |
| stage('Checkout') { |
| checkout scm |
| } |
| |
| def WORK_DIR=pwd() |
| |
| stage('Build / Unit Test') { |
| String jdkName = jenkinsEnv.jdkFromVersion(buildOs, buildJdk) |
| String mvnName = jenkinsEnv.mvnFromVersion(buildOs, buildMvn) |
| withMaven(jdk: jdkName, maven: mvnName, mavenLocalRepo:"${WORK_DIR}/.repository", options:[ |
| artifactsPublisher(disabled: false), |
| junitPublisher(ignoreAttachments: false), |
| findbugsPublisher(disabled: false), |
| openTasksPublisher(disabled: false), |
| dependenciesFingerprintPublisher(), |
| invokerPublisher(), |
| pipelineGraphPublisher() |
| ]) { |
| sh "mvn clean verify -B -U -e -fae -V -Dmaven.test.failure.ignore=true" |
| } |
| dir ('apache-maven/target') { |
| sh "mv apache-maven-*-bin.zip apache-maven-dist.zip" |
| stash includes: 'apache-maven-dist.zip', name: 'dist' |
| } |
| } |
| |
| tests = resolveScm source: [$class: 'GitSCMSource', credentialsId: '', id: '_', remote: 'https://git-wip-us.apache.org/repos/asf/maven-integration-testing.git', traits: [[$class: 'jenkins.plugins.git.traits.BranchDiscoveryTrait'], [$class: 'GitToolSCMSourceTrait', gitTool: 'Default']]], targets: [BRANCH_NAME, 'master'] |
| } |
| } |
| |
| |
| parallel linuxJava7:{ |
| node(jenkinsEnv.labelForOS('linux')) { |
| stage ('Linux Java 7') { |
| String jdkName = jenkinsEnv.jdkFromVersion('linux', '7') |
| String mvnName = jenkinsEnv.mvnFromVersion('linux', buildMvn) |
| dir('test') { |
| def WORK_DIR=pwd() |
| checkout tests |
| sh "rm -rvf $WORK_DIR/apache-maven-dist.zip $WORK_DIR/it-local-repo" |
| unstash 'dist' |
| withMaven(jdk: jdkName, maven: mvnName, mavenLocalRepo:"${WORK_DIR}/it-local-repo", options:[ |
| junitPublisher(ignoreAttachments: false) |
| ]) { |
| sh "mvn clean install -P$CORE_IT_PROFILES -B -U -V -Dmaven.test.failure.ignore=true -DmavenDistro=$WORK_DIR/apache-maven-dist.zip" |
| } |
| deleteDir() // clean up after ourselves to reduce disk space |
| } |
| } |
| } |
| },linuxJava8: { |
| node(jenkinsEnv.labelForOS('linux')) { |
| stage ('Linux Java 8') { |
| String jdkName = jenkinsEnv.jdkFromVersion('linux', '8') |
| String mvnName = jenkinsEnv.mvnFromVersion('linux', buildMvn) |
| dir('test') { |
| def WORK_DIR=pwd() |
| checkout tests |
| sh "rm -rvf $WORK_DIR/apache-maven-dist.zip $WORK_DIR/it-local-repo" |
| unstash 'dist' |
| withMaven(jdk: jdkName, maven: mvnName, mavenLocalRepo:"${WORK_DIR}/it-local-repo", options:[ |
| junitPublisher(ignoreAttachments: false) |
| ]) { |
| sh "mvn clean install -P$CORE_IT_PROFILES -B -U -V -Dmaven.test.failure.ignore=true -DmavenDistro=$WORK_DIR/apache-maven-dist.zip" |
| } |
| deleteDir() // clean up after ourselves to reduce disk space |
| } |
| } |
| } |
| }, winJava7: { |
| node(jenkinsEnv.labelForOS('windows')) { |
| stage ('Windows Java 7') { |
| String jdkName = jenkinsEnv.jdkFromVersion('windows', '7') |
| String mvnName = jenkinsEnv.mvnFromVersion('windows', buildMvn) |
| |
| // need a short path or we hit 256 character limit for paths |
| // using EXECUTOR_NUMBER guarantees that concurrent builds on same agent |
| // will not trample each other |
| dir("/mvn-it-${EXECUTOR_NUMBER}.tmp") { |
| def WORK_DIR=pwd() |
| checkout tests |
| bat "if exist it-local-repo rmdir /s /q it-local-repo" |
| bat "if exist apache-maven-dist.zip del /q apache-maven-dist.zip" |
| unstash 'dist' |
| withMaven(jdk: jdkName, maven: mvnName, mavenLocalRepo:"${WORK_DIR}/it-local-repo", options:[ |
| junitPublisher(ignoreAttachments: false) |
| ]) { |
| bat "mvn clean install -P$CORE_IT_PROFILES -B -U -V -Dmaven.test.failure.ignore=true -DmavenDistro=$WORK_DIR/apache-maven-dist.zip" |
| } |
| deleteDir() // clean up after ourselves to reduce disk space |
| } |
| } |
| } |
| }, winJava8: { |
| node(jenkinsEnv.labelForOS('windows')) { |
| stage ('Windows Java 8') { |
| String jdkName = jenkinsEnv.jdkFromVersion('windows', '8') |
| String mvnName = jenkinsEnv.mvnFromVersion('windows', buildMvn) |
| |
| // need a short path or we hit 256 character limit for paths |
| // using EXECUTOR_NUMBER guarantees that concurrent builds on same agent |
| // will not trample each other |
| dir("/mvn-it-${EXECUTOR_NUMBER}.tmp") { |
| def WORK_DIR=pwd() |
| checkout tests |
| bat "if exist it-local-repo rmdir /s /q it-local-repo" |
| bat "if exist apache-maven-dist.zip del /q apache-maven-dist.zip" |
| unstash 'dist' |
| withMaven(jdk: jdkName, maven: mvnName, mavenLocalRepo:"${WORK_DIR}/it-local-repo", options:[ |
| junitPublisher(ignoreAttachments: false) |
| ]) { |
| bat "mvn clean install -P$CORE_IT_PROFILES -B -U -V -Dmaven.test.failure.ignore=true -DmavenDistro=$WORK_DIR/apache-maven-dist.zip" |
| } |
| deleteDir() // clean up after ourselves to reduce disk space |
| } |
| } |
| } |
| } |
| |
| // JENKINS-34376 seems to make it hard to detect the aborted builds |
| } catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e) { |
| // this ambiguous condition means a user probably aborted |
| if (e.causes.size() == 0) { |
| currentBuild.result = "ABORTED" |
| } else { |
| currentBuild.result = "FAILURE" |
| } |
| throw e |
| } catch (hudson.AbortException e) { |
| // this ambiguous condition means during a shell step, user probably aborted |
| if (e.getMessage().contains('script returned exit code 143')) { |
| currentBuild.result = "ABORTED" |
| } else { |
| currentBuild.result = "FAILURE" |
| } |
| throw e |
| } catch (InterruptedException e) { |
| currentBuild.result = "ABORTED" |
| throw e |
| } catch (Throwable e) { |
| currentBuild.result = "FAILURE" |
| throw e |
| } finally { |
| // notify completion |
| stage("Notifications") { |
| jenkinsNotify() |
| } |
| } |