This is an automated email from the ASF dual-hosted git repository.
mck pushed a commit to branch cassandra-2.2
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-2.2 by this push:
new bb2562b Jenkinsfile fixes for wrong test reports being copied, and
reports getting clobbered
bb2562b is described below
commit bb2562b7774caf0b5037c5cd10f5fe07f75ed92f
Author: Mick Semb Wever <[email protected]>
AuthorDate: Sat Jul 4 23:19:17 2020 +0200
Jenkinsfile fixes for wrong test reports being copied, and reports getting
clobbered
- copy artifacts from specific build numbers, not lastest stage builds
- presend script to avoid threads in the builds mailing list
- Suffix "cassandra.testtag" value to the testsuite name, so testsuite
elements are separated cleanly
patch by Mick Semb Wever; reviewed by Berenguer Blasi for CASSANDRA-15925
---
.jenkins/Jenkinsfile | 306 +++++++++------------
.../CassandraXMLJUnitResultFormatter.java | 4 +-
2 files changed, 128 insertions(+), 182 deletions(-)
diff --git a/.jenkins/Jenkinsfile b/.jenkins/Jenkinsfile
index 77c111c..dc5982a 100644
--- a/.jenkins/Jenkinsfile
+++ b/.jenkins/Jenkinsfile
@@ -37,236 +37,182 @@ pipeline {
}
}
stage('Test') {
- parallel {
- stage('JVM DTests') {
- steps {
- warnError('Tests unstable') {
- build job: "${env.JOB_NAME}-jvm-dtest"
+ parallel {
+ stage('JVM DTests') {
+ steps {
+ script {
+ jvm_dtest = build job: "${env.JOB_NAME}-jvm-dtest", propagate:
false
+ if (jvm_dtest.result != 'SUCCESS') unstable('jvm-dtest
failures')
+ }
+ }
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('jvm-dtest', jvm_dtest.getNumber())
+ }
}
}
- post {
- success {
- warnError('missing test xml files') {
- script {
- copyTestResults('jvm-dtest')
- }
- }
- }
- unstable {
- warnError('missing test xml files') {
- script {
- copyTestResults('jvm-dtest')
- }
- }
- }
+ }
+ }
+ stage('units') {
+ steps {
+ script {
+ test = build job: "${env.JOB_NAME}-test", propagate: false
+ if (test.result != 'SUCCESS') unstable('unit test failures')
}
}
- stage('units') {
- steps {
- warnError('Tests unstable') {
- build job: "${env.JOB_NAME}-test"
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('test', test.getNumber())
+ }
}
- }
- 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"
+ }
+ stage('long units') {
+ steps {
+ script {
+ long_test = build job: "${env.JOB_NAME}-long-test", propagate:
false
+ if (long_test.result != 'SUCCESS') unstable('long unit test
failures')
+ }
+ }
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('long-test', long_test.getNumber())
+ }
}
}
- post {
- success {
- warnError('missing test xml files') {
- script {
- copyTestResults('long-test')
- }
- }
- }
- unstable {
- warnError('missing test xml files') {
- script {
- copyTestResults('long-test')
- }
- }
- }
+ }
+ }
+ stage('burn') {
+ steps {
+ script {
+ burn = build job: "${env.JOB_NAME}-test-burn", propagate: false
+ if (burn.result != 'SUCCESS') unstable('burn test failures')
}
}
- stage('burn') {
- steps {
- warnError('Tests unstable') {
- build job: "${env.JOB_NAME}-test-burn"
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('test-burn', burn.getNumber())
+ }
}
}
- post {
- success {
- warnError('missing test xml files') {
- script {
- copyTestResults('test-burn')
- }
- }
- }
- unstable {
- warnError('missing test xml files') {
- script {
- copyTestResults('test-burn')
- }
- }
- }
+ }
+ }
+ stage('compression') {
+ steps {
+ script {
+ compression = build job: "${env.JOB_NAME}-test-compression",
propagate: false
+ if (compression.result != 'SUCCESS') unstable('compression
failures')
}
}
- stage('compression') {
- steps {
- warnError('Tests unstable') {
- build job: "${env.JOB_NAME}-test-compression"
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('test-compression',
compression.getNumber())
+ }
}
}
- post {
- success {
- warnError('missing test xml files') {
- script {
- copyTestResults('test-compression')
- }
- }
- }
- unstable {
- warnError('missing test xml files') {
- script {
- copyTestResults('test-compression')
- }
- }
- }
- }
}
}
}
- 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('Distributed Test') {
+ parallel {
+ stage('dtest') {
+ steps {
+ script {
+ dtest = build job: "${env.JOB_NAME}-dtest", propagate: false
+ if (dtest.result != 'SUCCESS') unstable('dtest failures')
}
}
- stage('dtest-large') {
- steps {
- warnError('Tests unstable') {
- build job: "${env.JOB_NAME}-dtest-large"
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('dtest', dtest.getNumber())
+ }
}
}
- post {
- success {
- warnError('missing test xml files') {
- script {
- copyTestResults('dtest-large')
- }
- }
- }
- unstable {
- warnError('missing test xml files') {
- script {
- copyTestResults('dtest-large')
- }
+ }
+ }
+ stage('dtest-large') {
+ steps {
+ script {
+ dtest_large = build job: "${env.JOB_NAME}-dtest-large",
propagate: false
+ if (dtest_large.result != 'SUCCESS') unstable('dtest-large
failures')
+ }
+ }
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('dtest-large', dtest_large.getNumber())
}
}
}
}
- stage('dtest-novnode') {
- steps {
- warnError('Tests unstable') {
- build job: "${env.JOB_NAME}-dtest-novnode"
- }
+ }
+ stage('dtest-novnode') {
+ steps {
+ script {
+ dtest_novnode = build job: "${env.JOB_NAME}-dtest-novnode",
propagate: false
+ if (dtest_novnode.result != 'SUCCESS') unstable('dtest-novnode
failures')
}
- post {
- success {
- warnError('missing test xml files') {
- script {
- copyTestResults('dtest-novnode')
- }
- }
- }
- unstable {
- warnError('missing test xml files') {
- script {
- copyTestResults('dtest-novnode')
- }
+ }
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('dtest-novnode',
dtest_novnode.getNumber())
}
}
}
}
- stage('dtest-offheap') {
- steps {
- warnError('Tests unstable') {
- build job: "${env.JOB_NAME}-dtest-offheap"
- }
+ }
+ stage('dtest-offheap') {
+ steps {
+ script {
+ dtest_offheap = build job: "${env.JOB_NAME}-dtest-offheap",
propagate: false
+ if (dtest_offheap.result != 'SUCCESS') unstable('dtest-offheap
failures')
}
- post {
- success {
- warnError('missing test xml files') {
- script {
- copyTestResults('dtest-offheap')
- }
- }
- }
- unstable {
- warnError('missing test xml files') {
- script {
- copyTestResults('dtest-offheap')
- }
+ }
+ post {
+ always {
+ warnError('missing test xml files') {
+ script {
+ copyTestResults('dtest-offheap',
dtest_offheap.getNumber())
}
}
}
}
}
}
+ }
stage('Summary') {
steps {
sh "rm -fR cassandra-builds"
- sh "git clone
https://gitbox.apache.org/repos/asf/cassandra-builds.git"
+ sh "git clone --depth 1 --single-branch
https://gitbox.apache.org/repos/asf/cassandra-builds.git"
sh "./cassandra-builds/build-scripts/cassandra-test-report.sh"
junit testResults:
'**/build/test/**/TEST*.xml,**/cqlshlib.xml,**/nosetests.xml',
testDataPublishers: [[$class: 'StabilityTestDataPublisher']]
- // the following should fail on any installation other than
builds.apache.org
+ // the following should fail on any installation other than
ci-cassandra.apache.org
// TODO: keep jenkins infrastructure related settings in
`cassandra_job_dsl_seed.groovy`
warnError('cannot send notifications') {
script {
changes = formatChanges(currentBuild.changeSets)
echo "changes: ${changes}"
}
- slackSend channel: '#cassandra-builds', message: ":apache:
<${env.BUILD_URL}|${currentBuild.fullDisplayName}> completed:
${currentBuild.result}. ${env.GIT_COMMIT}\n${changes}"
- emailext to: '[email protected]', subject: "Build
complete: ${currentBuild.fullDisplayName} [${currentBuild.result}]
${env.GIT_COMMIT}", body: '''
+ slackSend channel: '#cassandra-builds', message: ":apache:
<${env.BUILD_URL}|${currentBuild.fullDisplayName}> completed:
${currentBuild.result}.
<https://github.com/apache/cassandra/commit/${env.GIT_COMMIT}|${env.GIT_COMMIT}>\n${changes}"
+ emailext to: '[email protected]', subject: "Build
complete: ${currentBuild.fullDisplayName} [${currentBuild.result}]
${env.GIT_COMMIT}", presendScript:
'${FILE,path="cassandra-builds/jenkins-dsl/cassandra_email_presend.groovy"}',
body: '''
-------------------------------------------------------------------------------
Build ${ENV,var="JOB_NAME"} #${BUILD_NUMBER} ${BUILD_STATUS}
URL: ${BUILD_URL}
@@ -290,12 +236,12 @@ ${FILE,path="cassandra-test-report.txt"}
}
}
-def copyTestResults(target) {
+def copyTestResults(target, build_number) {
step([$class: 'CopyArtifact',
projectName: "${env.JOB_NAME}-${target}",
optional: true,
fingerprintArtifacts: true,
- selector: [$class: 'StatusBuildSelector', stable: false],
+ selector: specific("${build_number}"),
target: target]);
}
diff --git
a/test/unit/org/apache/cassandra/CassandraXMLJUnitResultFormatter.java
b/test/unit/org/apache/cassandra/CassandraXMLJUnitResultFormatter.java
index 066315d..40cfe5e 100644
--- a/test/unit/org/apache/cassandra/CassandraXMLJUnitResultFormatter.java
+++ b/test/unit/org/apache/cassandra/CassandraXMLJUnitResultFormatter.java
@@ -143,8 +143,8 @@ public class CassandraXMLJUnitResultFormatter implements
JUnitResultFormatter, X
doc = getDocumentBuilder().newDocument();
rootElement = doc.createElement(TESTSUITE);
String n = suite.getName();
-// if (n != null && !tag.isEmpty())
-// n = n + "-" + tag;
+ if (n != null && !tag.isEmpty())
+ n = n + "-" + tag;
rootElement.setAttribute(ATTR_NAME, n == null ? UNKNOWN : n);
//add the timestamp
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]