128 lines
5.5 KiB
Groovy
128 lines
5.5 KiB
Groovy
#!groovy
|
|
|
|
node {
|
|
def job_name = "${JOB_NAME}"
|
|
if (job_name.contains('/')) {
|
|
job_names = job_name.split('/')
|
|
job_name = job_names[job_names.size() - 1]
|
|
}
|
|
|
|
def testContainer = "${job_name}${env.BUILD_NUMBER}_test"
|
|
def imageName = "acceptance-tests-${job_name}${env.BUILD_NUMBER}"
|
|
def envFile = ".env"
|
|
def qaseEnvFile = ".qase.env"
|
|
def branch = "main"
|
|
if (env.BRANCH && env.BRANCH != "null") {
|
|
branch = env.BRANCH
|
|
}
|
|
|
|
def repo = scm.userRemoteConfigs
|
|
if (env.REPO && env.REPO != "null") {
|
|
repo = [[url: env.REPO]]
|
|
}
|
|
def timeout = "60m"
|
|
if (env.TIMEOUT && env.TIMEOUT != "null") {
|
|
timeout = env.TIMEOUT
|
|
}
|
|
|
|
def module = ""
|
|
if (env.MODULE && env.MODULE != "null") {
|
|
module = env.MODULE
|
|
}
|
|
|
|
wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm', 'defaultFg': 2, 'defaultBg': 1]) {
|
|
withFolderProperties {
|
|
def paramsMap = params.findAll { it.value?.trim() }.collectEntries { [(it.key): it.value] }
|
|
withCredentials([
|
|
string(credentialsId: 'AWS_ACCESS_KEY_ID', variable: 'AWS_ACCESS_KEY_ID'),
|
|
string(credentialsId: 'AWS_SECRET_ACCESS_KEY', variable: 'AWS_SECRET_ACCESS_KEY'),
|
|
string(credentialsId: 'AWS_SSH_PEM_KEY', variable: 'AWS_SSH_PEM_KEY'),
|
|
string(credentialsId: 'ADMIN_PASSWORD', variable: 'ADMIN_PASSWORD'),
|
|
string(credentialsId: 'RKE2_RHEL_PASSWORD', variable: 'RKE2_RHEL_PASSWORD'),
|
|
string(credentialsId: 'QASE_AUTOMATION_TOKEN', variable: 'QASE_AUTOMATION_TOKEN')
|
|
]) {
|
|
withEnv(paramsMap.collect { k, v -> "$k=$v" }) {
|
|
stage('Checkout') {
|
|
deleteDir()
|
|
checkout([
|
|
$class: 'GitSCM',
|
|
branches: [[name: "*/${branch}"]],
|
|
extensions: scm.extensions + [[$class: 'CleanCheckout']],
|
|
userRemoteConfigs: repo
|
|
])
|
|
}
|
|
stage('Create QASE Environment Variables') {
|
|
script {
|
|
def qase = 'REPORT_TO_QASE=' + env.REPORT_TO_QASE + '\n' +
|
|
'QASE_PROJECT_ID=' + env.QASE_PROJECT_ID + '\n' +
|
|
'QASE_RUN_ID=' + env.QASE_RUN_ID + '\n' +
|
|
'QASE_TEST_CASE_ID=' + env.QASE_TEST_CASE_ID + '\n' +
|
|
'QASE_AUTOMATION_TOKEN=' + env.QASE_AUTOMATION_TOKEN + '\n'
|
|
writeFile file: qaseEnvFile, text: qase
|
|
}
|
|
}
|
|
dir('./') {
|
|
try {
|
|
stage('Configure and Build') {
|
|
if (env.AWS_SSH_PEM_KEY && env.AWS_SSH_KEY_NAME) {
|
|
dir('./config/.ssh') {
|
|
def decoded = new String(AWS_SSH_PEM_KEY.decodeBase64())
|
|
writeFile file: 'aws_key.pem', text: decoded
|
|
}
|
|
}
|
|
dir('./config') {
|
|
//update info in .env file
|
|
def data = "ENV_PRODUCT=${env.PRODUCT_NAME}\nENV_TFVARS=${env.PRODUCT_NAME}.tfvars\n" +
|
|
"KUBE_CONFIG=${env.KUBE_CONFIG}\nBASTION_IP=${env.BASTION_IP}\nLOG_LEVEL=${env.LOG_LEVEL}\nINSTALL_VERSION=${env.INSTALL_VERSION}\n" +
|
|
"ENV_MODULE=${module}\nINSTALL_CHANNEL=${env.INSTALL_CHANNEL}\n"
|
|
//adding data to .env file
|
|
writeFile(file: '.env', text: data)
|
|
|
|
//update tfvars file
|
|
def version_param_name = "${env.PRODUCT_NAME}_version"
|
|
def channel_param_name = "${env.PRODUCT_NAME}_channel"
|
|
def filename = "${env.PRODUCT_NAME}.tfvars"
|
|
def configContents = env.TFVARS
|
|
writeFile file: filename, text: configContents +
|
|
"\n${version_param_name} = \"${INSTALL_VERSION}\"" +
|
|
"\n${channel_param_name} = \"${INSTALL_CHANNEL}\"" +
|
|
"\ninstall_mode = \"${INSTALL_MODE}\"" +
|
|
'\npassword = \"' + RKE2_RHEL_PASSWORD + '\"' +
|
|
'\nkey_name = \"' + AWS_SSH_KEY_NAME + '\"' +
|
|
'\naccess_key = \"/go/src/github.com/rancher/distros-test-framework/config/.ssh/aws_key.pem\"' +
|
|
'\nresource_name = \"' + HOSTNAME_PREFIX + '\"' +
|
|
"\nproduct = \"${env.PRODUCT_NAME}\""
|
|
def testdata = readFile(file: filename)
|
|
println('\n\nTFVARS TEST DATA')
|
|
println(testdata)
|
|
}
|
|
stage('Docker Build') {
|
|
sh './scripts/configure.sh'
|
|
sh './scripts/build.sh'
|
|
}
|
|
}
|
|
stage('Run TestCombination') {
|
|
sh """
|
|
docker run --name ${testContainer} -t \
|
|
--env-file ${envFile} \
|
|
--env-file ./config/.env \
|
|
--env-file ${qaseEnvFile} \
|
|
-e TEST_ARGS='${env.TEST_ARGS}' \
|
|
${imageName} sh -c "env && chmod 400 /go/src/github.com/rancher/distros-test-framework/config/.ssh/aws_key.pem && \
|
|
cd ./entrypoint && go test -timeout=${timeout} -v ./${env.TEST_DIRECTORY}/... ${env.TEST_ARGS.replace('\"', '\\\"')}"
|
|
"""
|
|
}
|
|
} finally {
|
|
stage('Cleanup') {
|
|
sh "docker stop ${testContainer} || true"
|
|
sh "docker rm -v ${testContainer} || true"
|
|
sh "docker rmi -f ${imageName} || true"
|
|
} // stage
|
|
} // finally
|
|
} // dir
|
|
} // withEnv
|
|
} // withCredentials
|
|
} // withFolderProperties
|
|
} // wrap
|
|
} // node
|