distros-test-framework/scripts/Jenkinsfile_batch_install_test

134 lines
5.8 KiB
Groovy

#!groovy
node {
def branch = "main"
def test_dir = "${env.TEST_DIRECTORY_LIST}".split(',')
if ("${env.BRANCH}" != "null" && "${env.BRANCH}" != "") {
branch = "${env.BRANCH}"
}
def repo = scm.userRemoteConfigs
if ("${env.REPO}" != "null" && "${env.REPO}" != "") {
repo = [
[url: "${env.REPO}"]
]
}
def timeout = "60m"
if ("${env.TIMEOUT}" != "null" && "${env.TIMEOUT}" != "") {
timeout = "${env.TIMEOUT}"
}
wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm', 'defaultFg': 2, 'defaultBg': 1]) {
withFolderProperties {
paramsMap = []
params.each {
if (it.value && it.value.trim() != "") {
paramsMap << "$it.key=$it.value"
}
}
withEnv(paramsMap) {
stage('Checkout') {
deleteDir()
checkout([
$class: 'GitSCM',
branches: [
[name: "*/${branch}"]
],
extensions: scm.extensions + [
[$class: 'CleanCheckout']
],
userRemoteConfigs: repo
])
}
dir("./") {
stage('Run Parallel Jobs') {
echo "Running ${test_dir.size()} tests: ${test_dir}"
def jobs = [:]
test_dir.each { test_name ->
def actual_testdir_name = test_name
def job_aws_ssh_key_name = "${AWS_SSH_KEY_NAME}"
def job_aws_ssh_pem_key = "${AWS_SSH_PEM_KEY}"
if (test_name == "docker_cri" || test_name == "validatecluster_arm") {
actual_testdir_name = "validatecluster"
}
if (test_name.contains("restartservice")) {
actual_testdir_name = "restartservice"
}
def install_params = [
string(name: 'TEST_ARGS', value: "${TEST_ARGS}"),
string(name: 'REPO', value: "${REPO}"),
string(name: 'BRANCH', value: "${BRANCH}"),
string(name: 'PRODUCT_NAME', value: "${PRODUCT_NAME}"),
string(name: 'INSTALL_VERSION', value: "${INSTALL_VERSION}"),
string(name: 'INSTALL_MODE', value: "${INSTALL_MODE}"),
string(name: 'INSTALL_CHANNEL', value: "${INSTALL_CHANNEL}"),
string(name: 'HOSTNAME_PREFIX', value: "${HOSTNAME_PREFIX}"),
string(name: 'TEST_DIRECTORY', value: actual_testdir_name),
string(name: 'AWS_SSH_KEY_NAME', value: job_aws_ssh_key_name),
string(name: 'AWS_SSH_PEM_KEY', value: job_aws_ssh_pem_key),
string(name: 'REPORT_TO_QASE', value: "${REPORT_TO_QASE}"),
string(name: 'QASE_PROJECT_ID', value: "${QASE_PROJECT_ID}"),
string(name: 'QASE_RUN_ID', value: "${QASE_RUN_ID}"),
]
switch(test_name) {
case "validatecluster":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_validate_cluster", parameters: install_params }
break
case "validatecluster_arm":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_validate_cluster_arm", parameters: install_params }
break
case "killalluninstall":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_kill_all_uninstall", parameters: install_params }
break
case "killalluninstall_arm":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_kill_all_uninstall_arm", parameters: install_params }
break
case "docker_cri":
jobs[test_name] = { build job: "k3s_docker_cri", parameters: install_params }
break
case "restartservice":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_restart_service", parameters: install_params }
break
case "restartservice_splitroles":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_restart_service_splitroles", parameters: install_params }
break
case "rebootinstances":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_reboot_instances", parameters: install_params }
break
case "dualstack":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_dual_stack", parameters: install_params }
break
case "ipv6only":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_ipv6_only", parameters: install_params }
break
case "certrotate":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_cert_rotate", parameters: install_params }
break
case "secretsencrypt":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_secrets_encryption", parameters: install_params }
break
case "clusterreset":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_cluster_reset", parameters: install_params }
break
case "clusterrestore":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_cluster_restore", parameters: install_params }
break
case "mixedoscluster":
jobs[test_name] = { build job: "rke2_windows_agent", parameters: install_params }
break
} // switch case
} // for each test_dir loop
parallel jobs
} // stage run parallel jobs
} // dir
} // withEnv
} // withFolderProperties
} // wrap
} // node