| // 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. |
| pipeline { |
| parameters { |
| string(name: 'tests', description: 'space separated list of tests to run. e.g. ' + |
| 'TestLogRollingNoCluster TestMetricRegistryImpl TestConstraints') |
| string(name: 'node', defaultValue: 'Hadoop', |
| description: 'the node label that should be used to run the test.') |
| string(name: 'repeat_count', defaultValue: '100', |
| description: 'number of iterations to run looking for a failure.') |
| string(name: 'fork_count', defaultValue: '0.5C', description: ''' |
| Given to surefire to set the number of parallel forks for a given test attempt (i.e. one |
| maven invocation that has all of the specified tests. The default tries to use half of the |
| available cores on the system. |
| |
| For more information see |
| <a href="http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#forkCount"> |
| the surefire docs on the forkCount parameter</a> |
| ''') |
| } |
| agent { |
| node { |
| label "${params.node}" |
| } |
| } |
| options { |
| timeout (time: 6, unit: 'HOURS') |
| timestamps() |
| } |
| environment { |
| // where we check out to across stages |
| BASEDIR = "${env.WORKSPACE}/component" |
| OUTPUT_RELATIVE = 'output' |
| OUTPUTDIR = "${env.WORKSPACE}/output" |
| BRANCH_SPECIFIC_DOCKERFILE = "${env.BASEDIR}/dev-support/docker/Dockerfile" |
| } |
| stages { |
| stage ('run tests') { |
| tools { |
| maven 'Maven (latest)' |
| // this needs to be set to the jdk that ought to be used to build releases on the branch |
| // the Jenkinsfile is stored in. |
| jdk "JDK 1.8 (latest)" |
| } |
| steps { |
| sh """#!/bin/bash -e |
| echo "Setting up directories" |
| rm -rf "${env.OUTPUTDIR}" && mkdir "${env.OUTPUTDIR}" |
| rm -rf ".m2-repo" && mkdir ".m2-repo" |
| mkdir "${env.OUTPUTDIR}/machine" |
| """ |
| sh """#!/bin/bash -e |
| "${env.BASEDIR}/dev-support/gather_machine_environment.sh" \ |
| "${OUTPUT_RELATIVE}/machine" |
| """ |
| dir ("component") { |
| sh '''#!/bin/bash -e |
| ./dev-support/adhoc_run_tests/adhoc_run_tests.sh \ |
| --force-timeout 1800 \ |
| --maven-local-repo ".m2-repo" \ |
| --log-output "${OUTPUTDIR}" \ |
| --surefire-fork-count "${fork_count}" \ |
| --repeat "${repeat_count}" \ |
| "${tests}" |
| ''' |
| } |
| } |
| post { |
| always { |
| archiveArtifacts artifacts: 'output/*' |
| archiveArtifacts artifacts: 'output/**/*' |
| } |
| failure { |
| archiveArtifacts artifacts: 'component/**/target/surefire-reports/*' |
| } |
| } |
| } |
| } |
| } |