Rewrite managing of virtualenvs
Change-Id: I448df5bb42d6cae9a01557269d97f75a4fe4c641
diff --git a/jobs/pipelines/deploy-cicd-and-run-tests.groovy b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
index 8156eed..5106d80 100644
--- a/jobs/pipelines/deploy-cicd-and-run-tests.groovy
+++ b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
@@ -178,12 +178,6 @@
stage("report results to testrail from jenkins master") {
common.printMsg("Running on: " + node_with_reports, "blue")
common.printMsg("Running on: " + env.NODE_NAME, "blue")
- shared.verbose_sh("""\
- [ -d /home/jenkins/venv_testrail_reporter ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_reporter""", true, false, true)
- sshagent(credentials: ['maintenance-team-ssh']) {
- shared.run_cmd("""\
- . /home/jenkins/venv_testrail_reporter/bin/activate; pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U""")
- }
shared.swarm_testrail_report(steps, env.NODE_NAME)
}
stage("Store TestRail reports to job description") {
diff --git a/jobs/pipelines/run-test-scenarios.groovy b/jobs/pipelines/run-test-scenarios.groovy
index fc45ad8..b83dcec 100644
--- a/jobs/pipelines/run-test-scenarios.groovy
+++ b/jobs/pipelines/run-test-scenarios.groovy
@@ -65,12 +65,6 @@
stage("report results to testrail from jenkins master") {
if ("${env.REPORT_TO_TESTRAIL}" != "false") {
common.infoMsg("Running on: " + env.PARENT_NODE_NAME, "blue")
- shared.verbose_sh("""\
- [ -d /home/jenkins/venv_testrail_reporter ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_reporter""", true, false, true)
- sshagent(credentials: ['maintenance-team-ssh']) {
- shared.run_cmd("""\
- . /home/jenkins/venv_testrail_reporter/bin/activate; pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U""")
- }
shared.swarm_testrail_report(steps, env.PARENT_NODE_NAME)
} else {
common.infoMsg("REPORT_TO_TESTRAIL is set to FALSE. Skipped this step ")
diff --git a/jobs/pipelines/swarm-testrail-report.groovy b/jobs/pipelines/swarm-testrail-report.groovy
index 1167978..f9820f8 100644
--- a/jobs/pipelines/swarm-testrail-report.groovy
+++ b/jobs/pipelines/swarm-testrail-report.groovy
@@ -78,26 +78,6 @@
common.printMsg(stacklight_report_name ? "Found stacklight-pytest report: ${stacklight_report_name}" : "stacklight-pytest report not found", stacklight_report_name ? "blue" : "red")
common.printMsg(cvp_sanity_report_name ? "Found CVP Sanity report: ${cvp_sanity_report_name}" : "CVP Sanity report not found", cvp_sanity_report_name ? "blue" : "red")
- stage("Prepare/update venvs for reporter/analyzer tools"){
- sshagent(credentials: ['maintenance-team-ssh']) {
- shared.run_cmd("""\
- . /home/jenkins/venv_testrail_reporter/bin/activate;
- pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U;
- pip install --force-reinstall --no-deps git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter;""")
- }
- shared.run_cmd("""\
- if [ -f /home/jenkins/venv_testrail_analyzer/bin/python &&
- $(/home/jenkins/venv_testrail_analyzer/bin/python -V | awk -F "." '{print \$2}') -lt 6 ] ; then
- rm -rf /home/jenkins/venv_testrail_analyzer ;
- fi
- """)
- shared.run_cmd("""\
- [ -d /home/jenkins/venv_testrail_analyzer ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_analyzer ;
- source /home/jenkins/venv_testrail_analyzer/bin/activate;
- pip install git+https://review.gerrithub.io/ibumarskov/testrail-reporter@b9041b241f3364022cd0ad63510f02aab4352a6b
- """)
- }
-
if (deployment_report_name) {
stage("Deployment report") {
testSuiteName = "[MCP] Integration automation"
diff --git a/src/com/mirantis/system_qa/SharedPipeline.groovy b/src/com/mirantis/system_qa/SharedPipeline.groovy
index 8390c1b..c937fbe 100644
--- a/src/com/mirantis/system_qa/SharedPipeline.groovy
+++ b/src/com/mirantis/system_qa/SharedPipeline.groovy
@@ -686,8 +686,42 @@
writeFile(file: filename, text: script, encoding: "UTF-8")
}
+
+def withVirtualEnv(name, pythonVersion, installRepo = "", command = "") {
+ /// name - str, name of virtualenv, name of folder which will be located in /home/jenkins
+ /// pythonVersion - str, version of python defined through the ShiningPanda settings in the Jenkins (Jenkins ->
+ //Manage Jenkins -> Global Tool Configuration -> Python Installations)
+ /// installRepo - repo with tool which should be installed in that virtualenv
+ def homeDir = "/home/jenkins"
+ venvPath = "${homeDir}/${name}"
+ // check if venv exists
+
+ withPythonEnv("${pythonVersion}") {
+ if (!fileExists(venvPath)) {
+ sh """
+ set -x;
+ virtualenv ${venvPath};
+ source ${venvPath}/bin/activate;
+ pip install -U ${installRepo};
+ """
+ }
+ sh """
+ set -x;
+ source ${venvPath}/bin/activate;
+ ${command};
+ deactivate;
+
+ """
+ }
+ // if no - create folder, install specific python, install repo
+
+ // if yes - launch command
+
+
+}
+
+
def upload_results_to_testrail(report_name, testPlanName, testSuiteName, methodname, testrail_name_template, reporter_extra_options=[]) {
- def venvPath = '/home/jenkins/venv_testrail_reporter'
def testPlanDesc = env.LAB_CONFIG_NAME
def testrailURL = "https://mirantis.testrail.com"
def testrailProject = "Mirantis Cloud Platform"
@@ -713,8 +747,6 @@
] + reporter_extra_options
def script = """
- . ${venvPath}/bin/activate
- set -ex
report ${reporterOptions.join(' ')} ${report_name}
"""
@@ -726,17 +758,26 @@
passwordVariable: 'TESTRAIL_PASSWORD',
usernameVariable: 'TESTRAIL_USER']
]) {
- def ret = [:]
- ret.stdout = ''
- ret.exception = ''
- try {
- ret.stdout = run_cmd_stdout(script)
- } catch (Exception ex) {
- ret.exception = ("""\
-##### Report to '${testSuiteName}' failed: #####\n""" + ex.message + "\n\n")
- }
- return ret
- }
+
+ def ret = [:]
+ ret.stdout = ''
+ ret.exception = ''
+ try {
+ sshagent(credentials: ['maintenance-team-ssh']) {
+ withVirtualEnv(
+ name: "venv_testrail_reporter",
+ pythonVersion: "python3.7",
+ installRepo: "git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter",
+ command: script
+ )}
+// ret.stdout = run_cmd_stdout(script)
+ } catch (Exception ex) {
+ ret.exception = ("""\
+ ##### Report to '${testSuiteName}' failed: #####\n""" + ex.message + "\n\n")
+ }
+
+ return ret
+ }
}
@@ -750,16 +791,13 @@
}
def mark_test_results(testPlanName, testSuiteName) {
- def venvPath = '/home/jenkins/venv_testrail_analyzer'
def testrailURL = "https://mirantis.testrail.com"
def testrailProject = "Mirantis Cloud Platform"
def configName = env.LAB_CONFIG_NAME
def testRunName = "${configName} <${testSuiteName}>"
def script = """
- . ${venvPath}/bin/activate
- set -ex
- export TESTRAIL_URL=${testrailURL}
+ export TESTRAIL_URL=${testrailURL};
testrail-reporter analyze -p "${testrailProject}" -t "${testPlanName}" -r "${testRunName}" checklist.yaml
"""
@@ -769,13 +807,17 @@
[$class : 'UsernamePasswordMultiBinding',
credentialsId : testrail_cred_id,
passwordVariable: 'TESTRAIL_PASSWORD',
- usernameVariable: 'TESTRAIL_USER']
+ usernameVariable: 'TESTRAIL_USER'
]) {
def ret = [:]
ret.stdout = ''
ret.exception = ''
try {
- ret.stdout = run_cmd_stdout(script)
+ withVirtualEnv( name: "venv_testrail_analyzer",
+ pythonVersion: "python3.7",
+ installRepo: "git+https://review.gerrithub.io/ibumarskov/testrail-reporter",
+ command: script)
+// ret.stdout = run_cmd_stdout(script)
} catch (Exception ex) {
ret.exception = ("""\
##### Report to '${testRunName}' failed: #####\n""" + ex.message + "\n\n")
@@ -783,6 +825,7 @@
return ret
}
}
+
def reboot_hardware_nodes(creds_name) {
bm_ips_file = readFile("tcp_tests/templates/${creds_name}")
bm_ips = bm_ips_file.split("\n")