Update Model Manager test pipeline with fixes for manual run
Change-Id: I1935c7f343710079b55d4139a4806d5ff0e54c04
Related-task: #PROD-25044 (PROD:25044)
diff --git a/test-model-generator.groovy b/test-model-generator.groovy
index bf32033..a72e6e2 100644
--- a/test-model-generator.groovy
+++ b/test-model-generator.groovy
@@ -15,7 +15,7 @@
def common = new com.mirantis.mk.Common()
def gerrit = new com.mirantis.mk.Gerrit()
-def dockerLib = new com.mirantis.mk.Docker()
+def python = new com.mirantis.mk.Python()
def gerritCredentials = env.CREDENTIALS_ID ?: 'gerrit'
def slaveNode = env.SLAVE_NODE ?: 'python&&docker'
@@ -27,6 +27,7 @@
def version = env.MCP_VERSION ?: 'testing'
def dockerRegistry = env.DOCKER_REGISTRY ?: 'docker-prod-local.docker.mirantis.net'
def dockerReviewRegistry = env.DOCKER_REVIEW_REGISTRY ?: 'docker-dev-local.docker.mirantis.net'
+def cvpImageName = env.CVP_DOCKER_IMG ? "${dockerRegistry}/${env.CVP_DOCKER_IMG}:${version}" : "${dockerRegistry}/mirantis/cvp/cvp-trymcp-tests:${version}"
def checkouted = false
def testReportFile = "${env.WORKSPACE}/reports/report.html"
@@ -40,7 +41,7 @@
timeout(time: 1, unit: 'HOURS') {
node(slaveNode) {
sh "mkdir -p reports ${apiProject} ${uiProject}"
- def img = dockerLib.getImage("${env.CVP_DOCKER_IMG}:${version}", "${dockerRegistry}/mirantis/cvp/cvp-trymcp-tests:${version}")
+ def testImage = docker.image(cvpImageName)
try {
stage("checkout") {
if (event) {
@@ -75,8 +76,8 @@
extensions : [[$class: 'RelativeTargetDirectory', relativeTargetDir: uiProject]],
userRemoteConfigs: [[url: env.UI_GERRIT_REPO, refspec: uiGerritRef, credentialsId: gerritCredentials],],
])
- apiImage = image("${dockerReviewRegistry}/review/${env.FLAVOR}-${env.GERRIT_CHANGE_NUMBER}:${env.GERRIT_PATCHSET_NUMBER}")
- uiImage = image("${dockerRegistry}/${env.UI_DOCKER_IMG ?: "mirantis/model-generator/operations-ui"}:${version}")
+ apiImage = docker.image("${dockerReviewRegistry}/review/${env.FLAVOR}-${env.GERRIT_CHANGE_NUMBER}:${env.GERRIT_PATCHSET_NUMBER}")
+ uiImage = docker.image("${dockerRegistry}/${env.UI_DOCKER_IMG ?: "mirantis/model-generator/operations-ui"}:${version}")
} else if (env.FLAVOR == uiProject) {
// Second project is API
checkout([
@@ -85,8 +86,8 @@
extensions : [[$class: 'RelativeTargetDirectory', relativeTargetDir: apiProject]],
userRemoteConfigs: [[url: env.API_GERRIT_REPO, refspec: apiGerritRef, credentialsId: gerritCredentials],],
])
- apiImage = image("${dockerRegistry}/${env.API_DOCKER_IMG ?: "mirantis/model-generator/operations-api"}:${version}")
- uiImage = image("${dockerReviewRegistry}/review/${env.FLAVOR}-${env.GERRIT_CHANGE_NUMBER}:${env.GERRIT_PATCHSET_NUMBER}")
+ apiImage = docker.image("${dockerRegistry}/${env.API_DOCKER_IMG ?: "mirantis/model-generator/operations-api"}:${version}")
+ uiImage = docker.image("${dockerReviewRegistry}/review/${env.FLAVOR}-${env.GERRIT_CHANGE_NUMBER}:${env.GERRIT_PATCHSET_NUMBER}")
}
} else if (manualTrigger) {
checkout([
@@ -101,41 +102,42 @@
extensions : [[$class: 'RelativeTargetDirectory', relativeTargetDir: uiProject]],
userRemoteConfigs: [[url: env.UI_GERRIT_REPO, refspec: uiGerritRef, credentialsId: gerritCredentials],],
])
- apiImage = image("${dockerRegistry}/${env.API_DOCKER_IMG ?: "mirantis/model-generator/operations-api"}:${version}")
- uiImage = image("${dockerRegistry}/${env.UI_DOCKER_IMG ?: "mirantis/model-generator/operations-ui"}:${version}")
+ apiImage = docker.image("${dockerRegistry}/${env.API_DOCKER_IMG ?: "mirantis/model-generator/operations-api"}:${version}")
+ uiImage = docker.image("${dockerRegistry}/${env.UI_DOCKER_IMG ?: "mirantis/model-generator/operations-ui"}:${version}")
} else {
throw new Exception('Cannot checkout gerrit repositories. Please verify that parameters for repositories are properly set')
}
}
stage('Pull docker images') {
- apiImage.pull()
- uiImage.pull()
+ common.retry(3, 5) {
+ apiImage.pull()
+ }
+ common.retry(3, 5) {
+ uiImage.pull()
+ }
+ common.retry(3, 5) {
+ testImage.pull()
+ }
}
stage('Prepare and run docker compose services') {
- sh """
- virtualenv ${env.WORKSPACE}/venv
- source ${env.WORKSPACE}/venv/bin/activate
- pip install docker-compose==1.22.0
- """
+ python.setupVirtualenv("${env.WORKSPACE}/venv", 'python2', ['docker-compose==1.22.0'])
dir(apiProject) {
- sh """
- export IMAGE=${apiImage}
- source ${env.WORKSPACE}/venv/bin/activate && ./bootstrap_env.sh up
- """
+ python.runVirtualenvCommand("${env.WORKSPACE}/venv",
+ "export IMAGE=${apiImage.id}; ./bootstrap_env.sh up")
}
dir(uiProject) {
- sh """
- export IMAGE=${uiImage}
- source ${env.WORKSPACE}/venv/bin/activate && docker-compose up -d
- """
+ python.runVirtualenvCommand("${env.WORKSPACE}/venv",
+ "export IMAGE=${uiImage.id}; docker-compose up -d")
}
}
- stage("test") {
- img.inside("-u root:root -v ${env.WORKSPACE}/reports:/var/lib/qa_reports") {
+ stage('Test') {
+ testImage.inside("-u root:root" +
+ " -v ${env.WORKSPACE}/reports:/var/lib/qa_reports" +
+ "--entrypoint=/bin/bash") {
sh "pytest -m 'not trymcp'"
}
}
@@ -150,22 +152,24 @@
stage("Cleanup") {
if (fileExists("${env.WORKSPACE}/venv")) {
dir(apiProject) {
- sh "source ${env.WORKSPACE}/venv/bin/activate && ./bootstrap_env.sh down || true"
+ python.runVirtualenvCommand("${env.WORKSPACE}/venv", "./bootstrap_env.sh down || true")
}
dir(uiProject) {
- sh "source ${env.WORKSPACE}/venv/bin/activate && docker-compose down || true"
+ python.runVirtualenvCommand("${env.WORKSPACE}/venv", "docker-compose down || true")
}
sh "rm -rf ${env.WORKSPACE}/venv/"
}
if (apiImage && apiImage.id) {
- sh "docker rm -f ${apiImage.id}"
+ sh "docker rmi ${apiImage.id}"
}
if (uiImage && uiImage.id) {
- sh "docker rm -f ${uiImage.id}"
+ sh "docker rmi ${uiImage.id}"
}
// Remove everything what is owned by root
- img.inside("-u root:root -v ${env.WORKSPACE}:/temp") {
- sh('rm -rf /temp/reports/* /temp/cockroach_data')
+ testImage.inside("-u root:root" +
+ " -v ${env.WORKSPACE}/reports:/var/lib/qa_reports" +
+ "--entrypoint=/bin/bash") {
+ sh("rm -rf /var/lib/qa_reports/* /${env.WORKSPACE}/cockroach_data")
}
}
}