diff --git a/.jenkins/Jenkinsfile b/.jenkins/Jenkinsfile new file mode 100644 index 0000000000..572e8de119 --- /dev/null +++ b/.jenkins/Jenkinsfile @@ -0,0 +1,273 @@ +// 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 +// +// https://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. +// +// +// Jenkins declaration of how to build and test the current codebase. +// Jenkins infrastructure related settings should be kept in +// https://github.com/apache/cassandra-builds/blob/master/jenkins-dsl/cassandra_job_dsl_seed.groovy +// + +pipeline { + agent any + stages { + stage('Init') { + steps { + cleanWs() + } + } + stage('Build') { + steps { + build job: "${env.JOB_NAME}-artifacts" + } + } + stage('Test') { + parallel { + stage('JVM DTests') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-test-jvm-dtest-forking" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('test-jvm-dtest-forking') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('test-jvm-dtest-forking') + } + } + } + } + } + stage('units') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-test" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('test') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('test') + } + } + } + } + } + stage('long units') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-long-test" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('long-test') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('long-test') + } + } + } + } + } + stage('burn') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-test-burn" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('test-burn') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('test-burn') + } + } + } + } + } + stage('compression') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-test-compression" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('test-compression') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('test-compression') + } + } + } + } + } + stage('cqlsh') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-cqlsh-tests" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('cqlsh-test') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('cqlsh-test') + } + } + } + } + } + } + } + stage('Distributed Test') { + parallel { + stage('dtest') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-dtest" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('dtest') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('dtest') + } + } + } + } + } + stage('dtest-large') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-dtest-large" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('dtest-large') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('dtest-large') + } + } + } + } + } + stage('dtest-novnode') { + steps { + warnError('Tests unstable') { + build job: "${env.JOB_NAME}-dtest-novnode" + } + } + post { + success { + warnError('missing test xml files') { + script { + copyTestResults('dtest-novnode') + } + } + } + unstable { + warnError('missing test xml files') { + script { + copyTestResults('dtest-novnode') + } + } + } + } + } + } + } + stage('Summary') { + steps { + junit '**/TEST*.xml,**/cqlshlib.xml,**/nosetests.xml' + + // the following should fail on any installation other than builds.apache.org + // TODO: keep jenkins infrastructure related settings in `cassandra_job_dsl_seed.groovy` + warnError('cannot send notifications') { + slackSend channel: '#cassandra-builds', message: "${currentBuild.fullDisplayName} completed: ${currentBuild.result}. See ${env.BUILD_URL}" + emailext to: 'builds@cassandra.apache.org', subject: "Build complete: ${currentBuild.fullDisplayName} [${currentBuild.result}] ${env.GIT_COMMIT}", body: '${CHANGES}  ${JELLY_SCRIPT,template="text"}' + } + } + } +} + +def copyTestResults(target) { + step([$class: 'CopyArtifact', + projectName: "${env.JOB_NAME}-${target}", + optional: true, + fingerprintArtifacts: true, + selector: [$class: 'StatusBuildSelector', stable: false], + target: target]); +} diff --git a/build.xml b/build.xml index d24f7456f8..e5433166f9 100644 --- a/build.xml +++ b/build.xml @@ -1507,10 +1507,6 @@ - - @@ -1746,7 +1742,7 @@ - + diff --git a/ide/idea/workspace.xml b/ide/idea/workspace.xml index 3424af3f00..9cf2d966a5 100644 --- a/ide/idea/workspace.xml +++ b/ide/idea/workspace.xml @@ -324,7 +324,6 @@ -