debian-forge-composer/schutzbot/Jenkinsfile
Major Hayden e8429fc3ed CI: Gather log artifacts
Ensure that logs are artifacted after a test run. Also, ensure that
these logs are in unique directories so that they are not overwritten by
Jenkins as it builds the final artifact archive.

For example, if two jobs have a `test.log`, Jenkis will only keep one of
those logs. Each log must be named differently or placed in a unique
directory.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-14 11:54:14 -05:00

87 lines
No EOL
2.4 KiB
Groovy

pipeline {
agent none
options {
timestamps()
ansiColor('xterm')
}
stages {
stage("Functional Testing") {
parallel {
stage('Fedora 31 base') {
agent { label "fedora31" }
environment { TEST_TYPE = "base" }
steps {
run_tests()
}
post {
always {
preserve_logs('fedora31-base')
}
}
}
stage('Fedora 31 image') {
agent { label "fedora31" }
environment { TEST_TYPE = "image" }
steps {
run_tests()
}
post {
always {
preserve_logs('fedora31-image')
}
}
}
stage('Fedora 32 base') {
agent { label "fedora32" }
environment { TEST_TYPE = "base" }
steps {
run_tests()
}
post {
always {
preserve_logs('fedora32-base')
}
}
}
stage('Fedora 32 image') {
agent { label "fedora32" }
environment { TEST_TYPE = "image" }
steps {
run_tests()
}
post {
always {
preserve_logs('fedora32-image')
}
}
}
}
}
}
}
// Set up a function to hold the steps needed to run the tests so we don't
// need to copy/paste the same lines over and over above.
void run_tests() {
// Run the tests from the repository.
sh "schutzbot/run_tests.sh"
}
// Move logs to a unique location and tell Jenkins to capture them on success
// or failure.
void preserve_logs(test_slug) {
// Make a directory for the log files and move the logs there.
sh "mkdir ${test_slug} && mv *.log ${test_slug}/"
// Artifact the logs.
archiveArtifacts (
allowEmptyArchive: true,
artifacts: "${test_slug}/*.log"
)
}