distros-test-framework/scripts/Jenkinsfile_batch_test

161 lines
7.0 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_test_args = "${TEST_ARGS}"
def job_aws_ssh_key_name = "${AWS_SSH_KEY_NAME}"
def job_aws_ssh_pem_key = "${AWS_SSH_PEM_KEY}"
if (test_name == "upgrademanual" || test_name == "upgradereplacement" || test_name == "upgradesuc"){
actual_testdir_name = "upgradecluster"
if (test_name == "upgradesuc") {
job_test_args = job_test_args + " -tags=${test_name} -sucUpgradeVersion ${VERSION_OR_COMMIT}"
} else {
job_test_args = job_test_args + " -tags=${test_name} -installVersionOrCommit ${VERSION_OR_COMMIT}"
}
job_test_args = job_test_args + " -channel ${UPGRADE_CHANNEL}"
}
if (test_name == "deployrancher" ) {
if ("${CERT_MANAGER_VERSION}" != "") {
job_test_args = job_test_args + " -certManagerVersion ${CERT_MANAGER_VERSION}"
}
if ("${CHARTS_VERSION}" != "") {
job_test_args = job_test_args + " -chartsVersion ${CHARTS_VERSION}"
}
if ("${RANCHER_VERSION}" != "") {
job_test_args = job_test_args + " -rancherVersion ${RANCHER_VERSION}"
}
if ("${CHARTS_REPO_NAME}" != "") {
job_test_args = job_test_args + " -chartsRepoName ${CHARTS_REPO_NAME}"
}
if ("${CHARTS_REPO_URL}" != "") {
job_test_args = job_test_args + " -chartsRepoUrl ${CHARTS_REPO_URL}"
}
if ("${CHARTS_ARGS}" != "") {
job_test_args = job_test_args + " -chartsArgs ${CHARTS_ARGS}"
}
}
if (test_name == "dualstack") {
job_aws_ssh_key_name = "jenkins-elliptic-validation"
job_aws_ssh_pem_key = ""
}
if (test_name == "docker_cri" || test_name == "external_datastore"){
actual_testdir_name = "validatecluster"
}
def params = [
string(name: 'TEST_ARGS', value: job_test_args),
string(name: 'REPO', value: "${REPO}"),
string(name: 'BRANCH', value: "${BRANCH}"),
string(name: 'PRODUCT_NAME', value: "${PRODUCT_NAME}"),
string(name: 'PRE_UPGRADE_VERSION', value: "${PRE_UPGRADE_VERSION}"),
string(name: 'VERSION_OR_COMMIT', value: "${VERSION_OR_COMMIT}"),
string(name: 'INSTALL_MODE', value: "${INSTALL_MODE}"),
string(name: 'CHANNEL', value: "${CHANNEL}"),
string(name: 'UPGRADE_CHANNEL', value: "${UPGRADE_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),
]
echo "Params for job: \"${test_name}\" are:\n${params}"
switch(test_name) {
case "validatecluster":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_validate_cluster", parameters: params }
break
case "docker_cri":
jobs[test_name] = { build job: "k3s_docker_cri", parameters: params }
break
case "restartservice":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_restart_service", parameters: params }
break
case "dualstack":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_dual_stack", parameters: params }
break
case "deployrancher":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_deploy_rancher_manager", parameters: params }
break
case "certrotate":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_cert_rotate", parameters: params }
break
case "secretsencrypt":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_secrets_encryption", parameters: params }
break
case "upgrademanual":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_manual_upgrade", parameters: params }
break
case "upgradesuc":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_suc_upgrade", parameters: params }
break
case "upgradereplacement":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_upgrade_node_replacement", parameters: params }
break
case "clusterreset":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_cluster_reset", parameters: params }
break
case "external_datastore":
jobs[test_name] = { build job: "${env.PRODUCT_NAME}_external_datastore", parameters: params }
break
case "mixedoscluster":
jobs[test_name] = { build job: "rke2_windows_agent", parameters: params }
break
} // switch case
} // for each test_dir loop
parallel jobs
} // stage run parallel jobs
} // dir
} // withEnv
} // withFolderProperties
} // wrap
} // node