Merge "Change pipeline for e2e basic, integration, k8s-upgrade, ephemeral tests to...
[infra/cicd.git] / jjb / nsm / e2e-long-run.Jenkinsfile
index 5090c31536dc31710fd4008d292b0c2e759e1e0b..15913737f19a1f3da8b30e9370504434cd38561d 100644 (file)
@@ -65,6 +65,9 @@ node('nordix-nsm-build-ubuntu2204') {
         stage('E2E List') {
             E2EList(number_of_runs, interval, environment_name, ip_family, focus, skip).call()
         }
+        stage('Report') {
+            Report(environment_name, ip_family).call()
+        }
         stage('Cleanup') {
             Cleanup()
         }
@@ -77,7 +80,6 @@ def E2EList(number_of_runs, interval, environment_name, ip_family, focus, skip)
         def stages = [:]
         def list = sh(script: "seq -w 1 $number_of_runs | paste -sd ' ' -", returnStdout: true).trim().split(' ')
         def previous = '0'
-        env.E2E_PREVIOUSLY_EXECUTED = previous
         for (i in list) {
             stages.put("$i", E2E(i, previous, interval, environment_name, ip_family, focus, skip))
             previous = i
@@ -89,25 +91,41 @@ def E2EList(number_of_runs, interval, environment_name, ip_family, focus, skip)
 // Run e2e
 def E2E(id, previous_id, interval, environment_name, ip_family, focus, skip) {
     return {
-        stage('Wait for previous') {
-            waitUntil(initialRecurrencePeriod: 15000, quiet: true) {
-                return env.E2E_PREVIOUSLY_EXECUTED == previous_id
-            }
-        }
-        if (previous_id != '0') {
-            stage("Wait $interval seconds") {
-                sh "sleep $interval"
-            }
+        def wait = sh(script: "echo `expr $interval \\* $previous_id`", returnStdout: true).trim()
+        stage("Wait $wait seconds") {
+            sh "sleep $wait"
         }
         stage('E2E') {
             def command = "make e2e E2E_ENVIRONMENT=\"$environment_name\" E2E_IP_FAMILY=\"$ip_family\" E2E_FOCUS=\"$focus\" E2E_SKIP=\"$skip\""
-            try {
-                ExecSh(command).call()
-            } catch (Exception e) {
-                unstable 'Failing e2e'
+            timeout(time: interval, unit: 'SECONDS') {
+                try {
+                    ExecSh(command).call()
+                } catch (Exception e) {
+                    unstable 'Failing e2e'
+                }
             }
+            Archive(id).call()
+        }
+    }
+}
+
+def Report(environment_name, ip_family) {
+    return {
+        // Collect logs
+        def command = "cd ./test/e2e ; ./environment/$environment_name/$ip_family/test.sh on_failure"
+        ExecSh(command).call()
+        Archive('Report').call()
+    }
+}
+
+def Archive(id) {
+    return {
+        try {
+            sh "tar -czvf ${id}.tar.gz -C _output ."
+            archiveArtifacts artifacts: "${id}.tar.gz", followSymlinks: false
+            sh 'rm -rf _output ; mkdir -p _output'
+        } catch (Exception e) {
         }
-        env.E2E_PREVIOUSLY_EXECUTED = id
     }
 }