save artifacts on stage_4 success
[osm/devops.git] / jenkins / ci-pipelines / ci_stage_3.groovy
index 082f728..1c2e7ed 100644 (file)
@@ -30,8 +30,11 @@ properties([
         string(defaultValue: '', description: '', name: 'UPSTREAM_JOB_NUMBER'),
         string(defaultValue: 'dpkg1', description: '', name: 'GPG_KEY_NAME'),
         string(defaultValue: 'artifactory-osm', description: '', name: 'ARTIFACTORY_SERVER'),
+        string(defaultValue: 'osm-stage_4', description: '', name: 'DOWNSTREAM_STAGE_NAME'),
         booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_FAIL'),
-        booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_PASS')
+        booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_PASS'),
+        booleanParam(defaultValue: false, description: '', name: 'DO_STAGE_4'),
+        booleanParam(defaultValue: false, description: '', name: 'SAVE_ARTIFACTS_OVERRIDE'),
     ])
 ])
 
@@ -48,15 +51,12 @@ node("${params.NODE}") {
     ci_helper = load "jenkins/ci-pipelines/ci_helper.groovy"
 
     def upstream_main_job = params.UPSTREAM_SUFFIX
-    def save_artifacts = false
 
     // upstream jobs always use merged artifacts
     upstream_main_job += '-merge'
     container_name_prefix = "osm-${tag_or_branch}"
     container_name = "${container_name_prefix}"
     if ( JOB_NAME.contains('merge') ) {
-        save_artifacts = true
-        println("merge job, saving artifacts")
         container_name += "-merge"
     }
     container_name += "-${BUILD_NUMBER}"
@@ -127,6 +127,12 @@ node("${params.NODE}") {
                 // copy the public key into the release folder
                 // this pulls the key from the home dir of the current user (jenkins)
                 sh "cp ~/${REPO_KEY_NAME} ."
+
+                // merge the change logs
+                sh """
+                   rm -f changelog/changelog-osm.html
+                   [ ! -d changelog ] || for mdgchange in \$(ls changelog); do cat changelog/\$mdgchange >> changelog/changelog-osm.html; done
+                   """
             }
             // start an apache server to serve up the images
             http_server_name = "${container_name}-apache"
@@ -181,13 +187,29 @@ node("${params.NODE}") {
                """
         }
 
-        stage("Test") {
+        stage("Smoke") {
             ci_helper.systest_run(container_name, 'smoke')
             junit '*.xml'
         }
 
-        // save the artifacts of this build if this is a merge job
-        if ( save_artifacts ) {
+        stage_4_archive = false
+        if ( params.DO_STAGE_4 ) {
+            stage("stage_4") {
+                def downstream_params = [
+                    string(name: 'CONTAINER_NAME', value: container_name),
+                    string(name: 'NODE', value: NODE_NAME.split()[0]),
+                ]
+                stage_4_result = build job: "${params.DOWNSTREAM_STAGE_NAME}/${GERRIT_BRANCH}", parameters: downstream_params, propagate: false 
+                currentBuild.result = stage_4_result.result
+
+                if ( stage_4_result.getResult().equals('SUCCESS') ) {
+                    stage_4_archive = true;
+                }
+            }
+        }
+
+        // override to save the artifacts
+        if ( params.SAVE_ARTIFACTS_OVERRIDE || stage_4_archive ) {
             stage("Archive") {
                 sh "echo ${container_name} > build_version.txt"
                 archiveArtifacts artifacts: "build_version.txt", fingerprint: true
@@ -200,6 +222,7 @@ node("${params.NODE}") {
         }
     }
     catch(caughtError) {
+        println("Caught error!")
         error = caughtError
         currentBuild.result = 'FAILURE'
     }