string(defaultValue: 'artifactory-osm', description: '', name: 'ARTIFACTORY_SERVER'),
string(defaultValue: 'osm-stage_4', description: '', name: 'DOWNSTREAM_STAGE_NAME'),
string(defaultValue: 'testing-daily', description: '', name: 'DOCKER_TAG'),
+ string(defaultValue: 'ubuntu20.04', description: '', name: 'OPENSTACK_BASE_IMAGE'),
booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_FAIL'),
booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_PASS'),
booleanParam(defaultValue: true, description: '', name: 'SAVE_ARTIFACTS_ON_SMOKE_SUCCESS'),
////////////////////////////////////////////////////////////////////////////////////////
// Helper Functions
////////////////////////////////////////////////////////////////////////////////////////
-def run_robot_systest(tagName,testName,osmHostname,prometheusHostname,prometheus_port=null,envfile=null,portmappingfile=null,jujudata=null,kubeconfig=null,clouds=null,hostfile=null,jujuPassword=null,pass_th='0.0',unstable_th='0.0') {
- tempdir = sh(returnStdout: true, script: "mktemp -d").trim()
- if ( !envfile )
- {
+void run_robot_systest(String tagName,
+ String testName,
+ String osmHostname,
+ String prometheusHostname,
+ Integer prometheusPort=null,
+ String envfile=null,
+ String portmappingfile=null,
+ String kubeconfig=null,
+ String clouds=null,
+ String hostfile=null,
+ String jujuPassword=null,
+ String osmRSAfile=null,
+ String pass_th='0.0',
+ String unstable_th='0.0') {
+ tempdir = sh(returnStdout: true, script: 'mktemp -d').trim()
+ if ( !envfile ) {
sh(script: "touch ${tempdir}/env")
envfile="${tempdir}/env"
}
}
try {
- sh "docker run --env OSM_HOSTNAME=${osmHostname} --env PROMETHEUS_HOSTNAME=${prometheusHostname} ${PROMETHEUS_PORT_VAR} ${JUJU_PASSWORD_VAR} --env-file ${envfile} -v ${clouds}:/etc/openstack/clouds.yaml -v ${jujudata}:/root/.local/share/juju -v ${kubeconfig}:/root/.kube/config -v ${tempdir}:/robot-systest/reports -v ${portmappingfile}:/root/port-mapping.yaml ${hostfilemount} opensourcemano/tests:${tagName} -c -t ${testName}"
+ sh "docker run --env OSM_HOSTNAME=${osmHostname} --env PROMETHEUS_HOSTNAME=${prometheusHostname} ${PROMETHEUS_PORT_VAR} ${JUJU_PASSWORD_VAR} --env-file ${envfile} -v ${clouds}:/etc/openstack/clouds.yaml -v ${osmRSAfile}:/root/osm_id_rsa -v ${kubeconfig}:/root/.kube/config -v ${tempdir}:/robot-systest/reports -v ${portmappingfile}:/root/port-mapping.yaml ${hostfilemount} opensourcemano/tests:${tagName} -c -t ${testName}"
} finally {
sh "cp ${tempdir}/* ."
outputDirectory = sh(returnStdout: true, script: "pwd").trim()
server_id = null
http_server_name = null
devopstempdir = null
- jujutempdir = null
useCharmedInstaller = params.INSTALLER.equalsIgnoreCase("charmed")
try {
def upstreamComponent=""
if ( params.UPSTREAM_JOB_NAME ) {
println("Fetching upstream job artifact from ${params.UPSTREAM_JOB_NAME}")
+ lock('Artifactory') {
+ step ([$class: 'CopyArtifact',
+ projectName: "${params.UPSTREAM_JOB_NAME}",
+ selector: [$class: 'SpecificBuildSelector',
+ buildNumber: "${params.UPSTREAM_JOB_NUMBER}"]
+ ])
+
+ upstreamComponent = ci_helper.get_mdg_from_project(
+ ci_helper.get_env_value('build.env','GERRIT_PROJECT'))
+ def buildNumber = ci_helper.get_env_value('build.env','BUILD_NUMBER')
+ dir("$upstreamComponent") {
+ // the upstream job name contains suffix with the project. Need this stripped off
+ def project_without_branch = params.UPSTREAM_JOB_NAME.split('/')[0]
+ def packages = ci_helper.get_archive(params.ARTIFACTORY_SERVER,
+ upstreamComponent,
+ GERRIT_BRANCH,
+ "${project_without_branch} :: ${GERRIT_BRANCH}",
+ buildNumber)
- step ([$class: 'CopyArtifact',
- projectName: "${params.UPSTREAM_JOB_NAME}",
- selector: [$class: 'SpecificBuildSelector',
- buildNumber: "${params.UPSTREAM_JOB_NUMBER}"]
- ])
-
- upstreamComponent = ci_helper.get_mdg_from_project(
- ci_helper.get_env_value('build.env','GERRIT_PROJECT'))
- def buildNumber = ci_helper.get_env_value('build.env','BUILD_NUMBER')
- dir("$upstreamComponent") {
- // the upstream job name contains suffix with the project. Need this stripped off
- def project_without_branch = params.UPSTREAM_JOB_NAME.split('/')[0]
- def packages = ci_helper.get_archive(params.ARTIFACTORY_SERVER,
- upstreamComponent,
- GERRIT_BRANCH,
- "${project_without_branch} :: ${GERRIT_BRANCH}",
- buildNumber)
-
- packageList.addAll(packages)
- println("Fetched pre-merge ${params.UPSTREAM_JOB_NAME}: ${packages}")
- }
+ packageList.addAll(packages)
+ println("Fetched pre-merge ${params.UPSTREAM_JOB_NAME}: ${packages}")
+ }
+ } // lock artifactory
}
parallelSteps = [:]
}
}
}
- parallel parallelSteps
+ lock('Artifactory') {
+ parallel parallelSteps
+ }
///////////////////////////////////////////////////////////////////////////////////////
// Create Devops APT repository
output=sh(returnStdout: true, script: """#!/bin/sh -e
for line in `grep OS ~/hive/robot-systest.cfg | grep -v OS_CLOUD` ; do export \$line ; done
openstack server create --flavor osm.sanity \
- --image ubuntu18.04 \
+ --image ${OPENSTACK_BASE_IMAGE} \
--key-name CICD \
--property build_url="${BUILD_URL}" \
--nic net-id=osm-ext \
remote.logLevel = 'INFO'
remote.pty = true
+ // Force time sync to avoid clock drift and invalid certificates
+ sshCommand remote: remote, command: """
+ sudo apt update
+ sudo apt install -y ntp
+ sudo service ntp stop
+ sudo ntpd -gq
+ sudo service ntp start
+ """
+
sshCommand remote: remote, command: """
wget https://osm-download.etsi.org/ftp/osm-10.0-ten/install_osm.sh
chmod +x ./install_osm.sh
/usr/share/osm-devops/installers/osm_health.sh -k -s ${stackName}
"""
} // stage("OSM Health")
-///////////////////////////////////////////////////////////////////////////////////////
-// Get juju data from installed OSM in remote vm
-///////////////////////////////////////////////////////////////////////////////////////
- jujutempdir = sh(returnStdout: true, script: "mktemp -d").trim()
- jujudatafolder = jujutempdir + '/juju'
- homefolder = sshCommand remote: remote, command: 'echo ${HOME}'
- sshGet remote: remote, from: homefolder + '/.local/share/juju', into: jujutempdir, override: true
} // if ( params.DO_INSTALL )
prometheusPort,
params.ROBOT_VIM,
params.ROBOT_PORT_MAPPING_VIM,
- jujudatafolder,
params.KUBECONFIG,
params.CLOUDS,
hostfile,
jujuPassword,
+ SSH_KEY,
params.ROBOT_PASS_THRESHOLD,
params.ROBOT_UNSTABLE_THRESHOLD
)
if ( devopstempdir != null ) {
sh "rm -rf ${devopstempdir}"
}
-
- if ( jujutempdir != null ) {
- sh "rm -rf ${jujutempdir}"
- }
}
}