|
Packit |
63bb0d |
pipeline {
|
|
Packit |
63bb0d |
agent none
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
environment {
|
|
Packit |
63bb0d |
AWS_REGION = "us-east-2"
|
|
Packit |
63bb0d |
AWS_BUCKET = "imagebuilder-jenkins-testing-use2"
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
options {
|
|
Packit |
63bb0d |
timestamps()
|
|
Packit |
63bb0d |
ansiColor('xterm')
|
|
Packit |
63bb0d |
// Cancel the pipeline if it runs for more than three hours.
|
|
Packit |
63bb0d |
timeout(
|
|
Packit |
63bb0d |
time: 3,
|
|
Packit |
63bb0d |
unit: "HOURS"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
stages {
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
stage("Prepare 🤔") {
|
|
Packit |
63bb0d |
agent { label "schutzbot" }
|
|
Packit |
63bb0d |
options {
|
|
Packit |
63bb0d |
// Don't checkout the git repository here. It just clogs
|
|
Packit |
63bb0d |
// up the Jenkins disk space and does nothing for us.
|
|
Packit |
63bb0d |
skipDefaultCheckout()
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
steps {
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Get environment variables",
|
|
Packit |
63bb0d |
script: "env | sort"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
stage("Mock build 👷🏻") {
|
|
Packit |
63bb0d |
// Halt the pipeline immediately if a single mock build fails.
|
|
Packit |
63bb0d |
// A failure to build an RPM is serious and must be
|
|
Packit |
63bb0d |
// investigated.
|
|
Packit |
63bb0d |
failFast true
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
parallel {
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
stage('EL8') {
|
|
Packit |
63bb0d |
agent { label "rhel8cloudbase && x86_64" }
|
|
Packit |
63bb0d |
environment {
|
|
Packit |
63bb0d |
AWS_CREDS = credentials('aws-credentials-osbuildci')
|
|
Packit |
63bb0d |
RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
steps {
|
|
Packit |
63bb0d |
sh "schutzbot/ci_details.sh"
|
|
Packit |
63bb0d |
retry(3) {
|
|
Packit |
63bb0d |
sh "schutzbot/mockbuild.sh"
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
stash (
|
|
Packit |
63bb0d |
includes: 'osbuild-mock.repo',
|
|
Packit |
63bb0d |
name: 'rhel8cdn'
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
stage('EL8.3') {
|
|
Packit |
63bb0d |
agent { label "rhel83cloudbase && x86_64" }
|
|
Packit |
63bb0d |
environment {
|
|
Packit |
63bb0d |
AWS_CREDS = credentials('aws-credentials-osbuildci')
|
|
Packit |
63bb0d |
RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production-beta')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
steps {
|
|
Packit |
63bb0d |
sh "schutzbot/ci_details.sh"
|
|
Packit |
63bb0d |
retry(3) {
|
|
Packit |
63bb0d |
sh "schutzbot/mockbuild.sh"
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
stash (
|
|
Packit |
63bb0d |
includes: 'osbuild-mock.repo',
|
|
Packit |
63bb0d |
name: 'rhel83'
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
stage("Testing 🍌") {
|
|
Packit |
63bb0d |
parallel {
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
stage('EL8 Integration') {
|
|
Packit |
63bb0d |
agent { label "rhel8cloudbase && x86_64" }
|
|
Packit |
63bb0d |
environment {
|
|
Packit |
63bb0d |
TEST_TYPE = "integration"
|
|
Packit |
63bb0d |
AWS_CREDS = credentials('aws-credentials-osbuildci')
|
|
Packit |
63bb0d |
RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
steps {
|
|
Packit |
63bb0d |
unstash 'rhel8cdn'
|
|
Packit |
63bb0d |
run_tests('integration')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
post {
|
|
Packit |
63bb0d |
always {
|
|
Packit |
63bb0d |
preserve_logs('rhel8-integration')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
stage('EL8.3 Base') {
|
|
Packit |
63bb0d |
agent { label "rhel83cloudbase && x86_64" }
|
|
Packit |
63bb0d |
environment {
|
|
Packit |
63bb0d |
TEST_TYPE = "base"
|
|
Packit |
63bb0d |
RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production-beta')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
steps {
|
|
Packit |
63bb0d |
unstash 'rhel83'
|
|
Packit |
63bb0d |
run_tests('base')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
post {
|
|
Packit |
63bb0d |
always {
|
|
Packit |
63bb0d |
preserve_logs('rhel83-base')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
stage('EL8.3 Image') {
|
|
Packit |
63bb0d |
agent { label "rhel83cloudbase && psi && x86_64" }
|
|
Packit |
63bb0d |
environment {
|
|
Packit |
63bb0d |
TEST_TYPE = "image"
|
|
Packit |
63bb0d |
AWS_CREDS = credentials('aws-credentials-osbuildci')
|
|
Packit |
63bb0d |
AZURE_CREDS = credentials('azure')
|
|
Packit |
63bb0d |
OPENSTACK_CREDS = credentials("psi-openstack-creds")
|
|
Packit |
63bb0d |
RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production-beta')
|
|
Packit |
63bb0d |
VCENTER_CREDS = credentials('vmware-vcenter-credentials')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
steps {
|
|
Packit |
63bb0d |
unstash 'rhel83'
|
|
Packit |
63bb0d |
run_tests('image')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
post {
|
|
Packit |
63bb0d |
always {
|
|
Packit |
63bb0d |
preserve_logs('rhel83-image')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
stage('EL8.3 Integration') {
|
|
Packit |
63bb0d |
agent { label "rhel83cloudbase && x86_64" }
|
|
Packit |
63bb0d |
environment {
|
|
Packit |
63bb0d |
TEST_TYPE = "integration"
|
|
Packit |
63bb0d |
AWS_CREDS = credentials('aws-credentials-osbuildci')
|
|
Packit |
63bb0d |
RHN_REGISTRATION_SCRIPT = credentials('rhn-register-script-production-beta')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
steps {
|
|
Packit |
63bb0d |
unstash 'rhel83'
|
|
Packit |
63bb0d |
run_tests('integration')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
post {
|
|
Packit |
63bb0d |
always {
|
|
Packit |
63bb0d |
preserve_logs('rhel83-integration')
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
post {
|
|
Packit |
63bb0d |
success {
|
|
Packit |
63bb0d |
node('schutzbot') {
|
|
Packit |
63bb0d |
script {
|
|
Packit Service |
5f350b |
if (env.BRANCH_NAME == 'rhel-8.3.0') {
|
|
Packit Service |
5f350b |
telegramSend "💚 CI passed for osbuild-composer ${env.BRANCH_NAME} branch ${env.BUILD_URL}"
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
unsuccessful {
|
|
Packit |
63bb0d |
node('schutzbot') {
|
|
Packit |
63bb0d |
script {
|
|
Packit Service |
5f350b |
if (env.BRANCH_NAME == 'rhel-8.3.0') {
|
|
Packit Service |
5f350b |
telegramSend "💣 CI failed for osbuild-composer ${env.BRANCH_NAME} branch ${env.BUILD_URL}"
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Set up a function to hold the steps needed to run the tests so we don't
|
|
Packit |
63bb0d |
// need to copy/paste the same lines over and over above.
|
|
Packit |
63bb0d |
void run_tests(test_type) {
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Get CI machine details.
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Get CI machine details",
|
|
Packit |
63bb0d |
script: "schutzbot/ci_details.sh"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Deploy the Image Builder packages and services.
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Deploy",
|
|
Packit |
63bb0d |
script: "schutzbot/deploy.sh"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Run the base tests.
|
|
Packit |
63bb0d |
if (test_type == 'base') {
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Base tests",
|
|
Packit |
63bb0d |
script: "schutzbot/run_base_tests.sh"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
if (test_type == 'image') {
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Image tests",
|
|
Packit |
63bb0d |
script: "schutzbot/run_image_tests.sh"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
if (test_type == 'integration') {
|
|
Packit |
63bb0d |
// Run the qcow2 test.
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Integration test: QCOW2",
|
|
Packit |
63bb0d |
script: "test/image-tests/qemu.sh qcow2"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Run the openstack test.
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Integration test: OpenStack",
|
|
Packit |
63bb0d |
script: "test/image-tests/qemu.sh openstack"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Run the VHD/Azure test.
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Integration test: VHD",
|
|
Packit |
63bb0d |
script: "test/image-tests/qemu.sh vhd"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Run the AWS test.
|
|
Packit |
63bb0d |
sh (
|
|
Packit |
63bb0d |
label: "Integration test: AWS",
|
|
Packit |
63bb0d |
script: "test/image-tests/aws.sh"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Move logs to a unique location and tell Jenkins to capture them on success
|
|
Packit |
63bb0d |
// or failure.
|
|
Packit |
63bb0d |
void preserve_logs(test_slug) {
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Save the systemd journal.
|
|
Packit |
63bb0d |
sh "journalctl --boot > systemd-journald.log"
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Make a directory for the log files and move the logs there.
|
|
Packit |
63bb0d |
sh "mkdir ${test_slug} && mv *.log *.jpg ${test_slug}/ || true"
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// Artifact the logs.
|
|
Packit |
63bb0d |
archiveArtifacts (
|
|
Packit |
63bb0d |
allowEmptyArchive: true,
|
|
Packit |
63bb0d |
artifacts: "${test_slug}/*.log,${test_slug}/*.jpg"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
}
|