From 2a344a38ea05e493cfdf33a4d37d92126633823e Mon Sep 17 00:00:00 2001 From: garciadeblas Date: Sat, 10 Apr 2021 09:34:34 +0200 Subject: [PATCH] Update stage1 and stage3 to run robot tests with tag This commit updates stage1 and stage3 to allow running robot tests in stage3 by default for every commit. The commit removes param DO_STAGE_4 since it is confusing. Only params DO_ROBOT and ROBOT_TAG will be used. If DO_ROBOT is set to true, robot tests will be run in stage3 for all tests containing the tag indicated by ROBOT_TAG. The param ROBOT_TAG replaces the previous param TEST_NAME. MDG stage1 can specify params DO_ROBOT and ROBOT_TAG. If specified, they will be used. Otherwise, the default for stage3 will apply (DO_ROBOT=true, ROBOT_TAG=sanity). Daily job, which will run stage1, can also specify params DO_ROBOT and ROBOT_TAG. In principle, they will be set as follows: DO_ROBOT=true, ROBOT_TAG=daily. Stage1 job, in case of failure, will send an e-mail to OSM_MDL mailing list reporting the failure. The mail will only be sent if the name of the job starts with "daily-stage_4". Change-Id: If481f2da01f4c811495504329fe7b6d7bd88c9de Signed-off-by: garciadeblas --- jenkins/ci-pipelines/ci_stage_1.groovy | 24 +++++----- jenkins/ci-pipelines/ci_stage_3.groovy | 65 ++++++++++++-------------- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/jenkins/ci-pipelines/ci_stage_1.groovy b/jenkins/ci-pipelines/ci_stage_1.groovy index 0f530c52..261e12fc 100644 --- a/jenkins/ci-pipelines/ci_stage_1.groovy +++ b/jenkins/ci-pipelines/ci_stage_1.groovy @@ -59,12 +59,6 @@ node("${params.NODE}") { println("No gerrit event found") } - do_stage_4 = false - if (params.DO_STAGE_4) - { - do_stage_4 = params.DO_STAGE_4 - } - // pipeline running from gerrit trigger. // kickoff the downstream multibranch pipeline def downstream_params = [ @@ -75,10 +69,16 @@ node("${params.NODE}") { string(name: 'PROJECT_URL_PREFIX', value: params.PROJECT_URL_PREFIX), string(name: 'DOCKER_TAG', value: params.DOCKER_TAG), booleanParam(name: 'TEST_INSTALL', value: params.TEST_INSTALL), - booleanParam(name: 'DO_ROBOT', value: params.DO_ROBOT), - booleanParam(name: 'DO_STAGE_4', value: do_stage_4), ] - + if ( params.DO_ROBOT ) + { + downstream_params.add(booleanParam(name: 'DO_ROBOT', value: params.DO_ROBOT)) + } + if ( params.ROBOT_TAG ) + { + downstream_params.add(booleanParam(name: 'ROBOT_TAG', value: params.ROBOT_TAG)) + } + if ( params.STAGE ) { // go directly to stage 3 (osm system) @@ -101,8 +101,8 @@ node("${params.NODE}") { project = stage_3_merge_result.getProjectName() build = stage_3_merge_result.getNumber() // Jayant if the build fails the below error will cause the pipeline to terminate. - // error("${project} build ${build} failed") - currentBuild.result = stage_3_merge_result.getResult() + // error("${project} build ${build} failed") + currentBuild.result = stage_3_merge_result.getResult() } } catch(caughtError) { @@ -111,7 +111,7 @@ node("${params.NODE}") { } finally { try { - if((currentBuild.result != 'SUCCESS') && (env.JOB_NAME == 'daily-stage_4')){ + if ((currentBuild.result != 'SUCCESS') && (env.JOB_NAME.startsWith('daily-stage_4'))){ emailext ( subject: "[OSM-Jenkins] Job: ${env.JOB_NAME} Build: ${env.BUILD_NUMBER} Result: ${currentBuild.result}", body: """ Check console output at "${env.BUILD_URL}" """, diff --git a/jenkins/ci-pipelines/ci_stage_3.groovy b/jenkins/ci-pipelines/ci_stage_3.groovy index f5fa75d3..d42c6dd2 100644 --- a/jenkins/ci-pipelines/ci_stage_3.groovy +++ b/jenkins/ci-pipelines/ci_stage_3.groovy @@ -35,15 +35,13 @@ properties([ 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'), - booleanParam(defaultValue: true, description: '', name: 'DO_STAGE_4'), booleanParam(defaultValue: true, description: '', name: 'DO_BUILD'), booleanParam(defaultValue: true, description: '', name: 'DO_INSTALL'), - booleanParam(defaultValue: true, description: '', name: 'DO_SMOKE'), booleanParam(defaultValue: true, description: '', name: 'DO_DOCKERPUSH'), booleanParam(defaultValue: false, description: '', name: 'SAVE_ARTIFACTS_OVERRIDE'), string(defaultValue: '/home/jenkins/hive/openstack-etsi.rc', description: '', name: 'HIVE_VIM_1'), - booleanParam(defaultValue: false, description: '', name: 'DO_ROBOT'), - string(defaultValue: 'daily', description: 'sanity/regression/daily are the common options', name: 'TEST_NAME'), + booleanParam(defaultValue: true, description: '', name: 'DO_ROBOT'), + string(defaultValue: 'sanity', description: 'sanity/regression/daily are the common options', name: 'ROBOT_TAG'), string(defaultValue: '/home/jenkins/hive/robot-systest.cfg', description: '', name: 'ROBOT_VIM'), string(defaultValue: '/home/jenkins/hive/kubeconfig.yaml', description: '', name: 'KUBECONFIG'), string(defaultValue: '/home/jenkins/hive/clouds.yaml', description: '', name: 'CLOUDS'), @@ -475,56 +473,53 @@ node("${params.NODE}") { osmHostname = IP_ADDRESS } } // stage("Install") - } // if ( params.DO_INSTALL ) - /////////////////////////////////////////////////////////////////////////////////////// // Health check of installed OSM in remote vm /////////////////////////////////////////////////////////////////////////////////////// - if ( params.DO_SMOKE ) { stage("OSM Health") { stackName = "osm" sshCommand remote: remote, command: """ /usr/share/osm-devops/installers/osm_health.sh -k -s ${stackName} """ - } + } // stage("OSM Health") } + } // if ( params.DO_INSTALL ) + /////////////////////////////////////////////////////////////////////////////////////// // Execute Robot tests /////////////////////////////////////////////////////////////////////////////////////// stage_archive = false - if ( params.DO_STAGE_4 ) { + if ( params.DO_ROBOT ) { try { stage("System Integration Test") { - if ( params.DO_ROBOT ) { - if( useCharmedInstaller ) { - tempdir = sh(returnStdout: true, script: "mktemp -d").trim() - sh(script: "touch ${tempdir}/hosts") - hostfile="${tempdir}/hosts" - sh """cat << EOF > ${hostfile} + if ( useCharmedInstaller ) { + tempdir = sh(returnStdout: true, script: "mktemp -d").trim() + sh(script: "touch ${tempdir}/hosts") + hostfile="${tempdir}/hosts" + sh """cat << EOF > ${hostfile} 127.0.0.1 localhost ${remote.host} prometheus.${remote.host}.xip.io nbi.${remote.host}.xip.io EOF""" - } else { - hostfile=null - } - - jujuPassword=sshCommand remote: remote, command: """ - echo `juju gui 2>&1 | grep password | cut -d: -f2` - """ - - run_robot_systest( - container_name, - params.TEST_NAME, - osmHostname, - prometheusHostname, - prometheusPort, - params.ROBOT_VIM, - params.KUBECONFIG, - params.CLOUDS, - hostfile, - jujuPassword) + } else { + hostfile=null } + + jujuPassword=sshCommand remote: remote, command: """ + echo `juju gui 2>&1 | grep password | cut -d: -f2` + """ + + run_robot_systest( + container_name, + params.ROBOT_TAG, + osmHostname, + prometheusHostname, + prometheusPort, + params.ROBOT_VIM, + params.KUBECONFIG, + params.CLOUDS, + hostfile, + jujuPassword) } // stage("System Integration Test") } finally { stage("Archive Container Logs") { @@ -540,7 +535,7 @@ EOF""" } } } - } // if ( params.DO_STAGE_4 ) + } // if ( params.DO_ROBOT ) if ( params.SAVE_ARTIFACTS_OVERRIDE || stage_archive ) { stage("Archive") { -- 2.25.1