Jenkins: Archive JUnit results also on failing tests

This commit is contained in:
Johannes Schnatterer 2017-10-10 16:46:19 +02:00
parent e92ae405dd
commit ef3e3defd4

120
Jenkinsfile vendored
View file

@ -1,75 +1,75 @@
#!groovy #!groovy
node { node {
cesFqdn = "ecosystem.cloudogu.net"; cesFqdn = "ecosystem.cloudogu.net"
cesUrl = "https://${cesFqdn}"; cesUrl = "https://${cesFqdn}"
credentials = usernamePassword(credentialsId: 'scmCredentials', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME'); credentials = usernamePassword(credentialsId: 'scmCredentials', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')
stage('Checkout') { catchError {
checkout scm
}
stage('Build') { stage('Checkout') {
mvn "-DskipTests clean package" checkout scm
// archive artifact
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
}
parallel(
test: {
stage('Test') {
String jacoco = "org.jacoco:jacoco-maven-plugin:0.7.7.201606060606";
mvn "${jacoco}:prepare-agent test ${jacoco}:report"
// Archive JUnit results, if any
junit allowEmptyResults: true, testResults: '**/target/surefire-reports/TEST-*.xml'
}
},
integrationTest: {
stage('Integration Test') {
String jacoco = "org.jacoco:jacoco-maven-plugin:0.7.7.201606060606";
mvn "${jacoco}:prepare-agent-integration failsafe:integration-test ${jacoco}:report-integration"
// Archive JUnit results, if any
junit allowEmptyResults: true, testResults: '**/target/failsafe-reports/TEST-*.xml'
}
}
)
stage('SonarQube Analysis') {
withCredentials([credentials]) {
//noinspection GroovyAssignabilityCheck
mvn "org.codehaus.mojo:sonar-maven-plugin:3.2:sonar -Dsonar.host.url=${cesUrl}/sonar " +
"-Dsonar.login=${USERNAME} -Dsonar.password=${PASSWORD} -Dsonar.exclusions=target/**"
} }
stage('Build') {
mvn "-DskipTests clean package"
// archive artifact
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
}
parallel(
test: {
stage('Test') {
String jacoco = "org.jacoco:jacoco-maven-plugin:0.7.7.201606060606";
mvn "${jacoco}:prepare-agent test ${jacoco}:report"
}
},
integrationTest: {
stage('Integration Test') {
String jacoco = "org.jacoco:jacoco-maven-plugin:0.7.7.201606060606";
mvn "${jacoco}:prepare-agent-integration failsafe:integration-test ${jacoco}:report-integration"
}
}
)
stage('SonarQube Analysis') {
withCredentials([credentials]) {
//noinspection GroovyAssignabilityCheck
mvn "org.codehaus.mojo:sonar-maven-plugin:3.2:sonar -Dsonar.host.url=${cesUrl}/sonar " +
"-Dsonar.login=${USERNAME} -Dsonar.password=${PASSWORD} -Dsonar.exclusions=target/**"
}
}
parallel(
deployArtifacts: {
stage('Deploy Artifacts') {
String releaseProp = "-DaltReleaseDeploymentRepository=${cesFqdn}::default::${cesUrl}/nexus/content/repositories/releases/";
String snapshotProp = "-DaltSnapshotDeploymentRepository=${cesFqdn}::default::${cesUrl}/nexus/content/repositories/snapshots/";
mvn "-DskipTests deploy ${releaseProp} ${snapshotProp}"
}
},
deployApplication: {
stage('Deploy Application') {
sh "ansible-playbook playbook.yaml"
}
}
)
} }
parallel( // Archive Unit and integration test results, if any
deployArtifacts: { junit allowEmptyResults: true, testResults: '**/target/failsafe-reports/TEST-*.xml,**/target/surefire-reports/TEST-*.xml'
stage('Deploy Artifacts') {
String releaseProp = "-DaltReleaseDeploymentRepository=${cesFqdn}::default::${cesUrl}/nexus/content/repositories/releases/";
String snapshotProp = "-DaltSnapshotDeploymentRepository=${cesFqdn}::default::${cesUrl}/nexus/content/repositories/snapshots/";
mvn "-DskipTests deploy ${releaseProp} ${snapshotProp}"
}
},
deployApplication: {
stage('Deploy Application') {
sh "ansible-playbook playbook.yaml"
}
}
)
} }
String cesFqdn; String cesFqdn
String cesUrl; String cesUrl
def credentials; def credentials
void mvn(String args) { void mvn(String args) {
writeSettingsXml() writeSettingsXml()
sh "./mvnw -s settings.xml --batch-mode -V -U -e -Dsurefire.useFile=false ${args}" sh "./mvnw -s settings.xml --batch-mode -V -U -e -Dsurefire.useFile=false ${args}"
sh 'rm -f settings.xml' sh 'rm -f settings.xml'
} }
void writeSettingsXml() { void writeSettingsXml() {