From 47437903f9c6ee6feebb78f6ad90b43dc2264d66 Mon Sep 17 00:00:00 2001
From: Raphael Defosseux <raphael.defosseux@eurecom.fr>
Date: Mon, 5 Nov 2018 15:18:40 +0100
Subject: [PATCH] CI: lock mechanism improvement  -- in slave job, the lock is
 now properly done for the whole job  -- in master job, all slave jobs are
 really sent in parallel     they should now now appear as failed (if fails)

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
---
 ci-scripts/Jenkinsfile-gitlab  | 328 ++++++++++++++++-----------------
 ci-scripts/Jenkinsfile-tmp-ran |   3 +-
 2 files changed, 155 insertions(+), 176 deletions(-)

diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab
index 7ef68e36cf6..0def0c916a8 100644
--- a/ci-scripts/Jenkinsfile-gitlab
+++ b/ci-scripts/Jenkinsfile-gitlab
@@ -294,200 +294,180 @@ pipeline {
                         }
                     }
                 }
-                stage ("Test on CI bench #1") {
-                    stages {
-                        stage ("Test FDD - Band 7 - B210") {
-                            steps {
-                                script {
-                                    try {
-                                        if ("MERGE".equals(env.gitlabActionType)) {
-                                            gitlabCommitStatus(name: "Test-FDD-Band7") {
-                                                build job: 'eNB-CI-FDD-Band7-B210',
-                                                   parameters: [
-                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                                       string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
-                                                       string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
-                                                       booleanParam(name: 'eNB_mergeRequest', value: true)
-                                                   ]
-                                            }
-                                        } else {
-                                            gitlabCommitStatus(name: "Test-FDD-Band7") {
-                                                build job: 'eNB-CI-FDD-Band7-B210',
-                                                   parameters: [
-                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                                       string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
-                                                       string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
-                                                       booleanParam(name: 'eNB_mergeRequest', value: false)
-                                                   ]
-                                            }
-                                        }
-                                    } catch (Exception e) {
-                                        currentBuild.result = 'FAILURE'
-                                    }
+                stage ("Test FDD - Band 7 - B210") {
+                    steps {
+                        script {
+                            if ("MERGE".equals(env.gitlabActionType)) {
+                                gitlabCommitStatus(name: "Test-FDD-Band7") {
+                                    build job: 'eNB-CI-FDD-Band7-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: true)
+                                       ]
+                                }
+                            } else {
+                                gitlabCommitStatus(name: "Test-FDD-Band7") {
+                                    build job: 'eNB-CI-FDD-Band7-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: false)
+                                       ]
                                 }
                             }
-                            post {
-                                // In case of any non-success, we are retrieving the HTML report of the last completed
-                                // slave job.
-                                // The only drop-back is that we may retrieve the HTML report of a previous build
-                                always {
-                                    script {
-                                        if (!fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) {
-                                            copyArtifacts(projectName: 'eNB-CI-FDD-Band7-B210',
-                                                          filter: 'test_results*.html',
-                                                          selector: lastCompleted())
-                                            if (fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) {
-                                                sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-FDD-Band7-B210.html"
-                                                archiveArtifacts artifacts: 'test_results-eNB-CI-FDD-Band7-B210.html'
-                                            }
-                                        }
+                        }
+                    }
+                    post {
+                        // In case of any non-success, we are retrieving the HTML report of the last completed
+                        // slave job.
+                        // The only drop-back is that we may retrieve the HTML report of a previous build
+                        always {
+                            script {
+                                if (!fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) {
+                                    copyArtifacts(projectName: 'eNB-CI-FDD-Band7-B210',
+                                                  filter: 'test_results*.html',
+                                                  selector: lastCompleted())
+                                    if (fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) {
+                                        sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-FDD-Band7-B210.html"
+                                        archiveArtifacts artifacts: 'test_results-eNB-CI-FDD-Band7-B210.html'
                                     }
                                 }
                             }
                         }
-                        stage ("Test TDD - Band 40 - B210") {
-                            steps {
-                                script {
-                                    try {
-                                        if ("MERGE".equals(env.gitlabActionType)) {
-                                            gitlabCommitStatus(name: "Test-TDD-Band40") {
-                                                build job: 'eNB-CI-TDD-Band40-B210',
-                                                   parameters: [
-                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                                       string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
-                                                       string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
-                                                       booleanParam(name: 'eNB_mergeRequest', value: true)
-                                                   ]
-                                            }
-                                        } else {
-                                            gitlabCommitStatus(name: "Test-TDD-Band40") {
-                                                build job: 'eNB-CI-TDD-Band40-B210',
-                                                   parameters: [
-                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                                       string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
-                                                       string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
-                                                       booleanParam(name: 'eNB_mergeRequest', value: false)
-                                                   ]
-                                            }
-                                        }
-                                    } catch (Exception e) {
-                                        currentBuild.result = 'FAILURE'
-                                    }
+                    }
+                }
+                stage ("Test TDD - Band 40 - B210") {
+                    steps {
+                        script {
+                            if ("MERGE".equals(env.gitlabActionType)) {
+                                gitlabCommitStatus(name: "Test-TDD-Band40") {
+                                    build job: 'eNB-CI-TDD-Band40-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: true)
+                                       ]
+                                }
+                            } else {
+                                gitlabCommitStatus(name: "Test-TDD-Band40") {
+                                    build job: 'eNB-CI-TDD-Band40-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: false)
+                                       ]
                                 }
                             }
-                            post {
-                                // In case of any non-success, we are retrieving the HTML report of the last completed
-                                // slave job.
-                                // The only drop-back is that we may retrieve the HTML report of a previous build
-                                always {
-                                    script {
-                                        if (!fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) {
-                                            copyArtifacts(projectName: 'eNB-CI-TDD-Band40-B210',
-                                                          filter: 'test_results*.html',
-                                                          selector: lastCompleted())
-                                            if (fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) {
-                                                sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-TDD-Band40-B210.html"
-                                                archiveArtifacts artifacts: 'test_results-eNB-CI-TDD-Band40-B210.html'
-                                            }
-                                        }
+                        }
+                    }
+                    post {
+                        // In case of any non-success, we are retrieving the HTML report of the last completed
+                        // slave job.
+                        // The only drop-back is that we may retrieve the HTML report of a previous build
+                        always {
+                            script {
+                                if (!fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) {
+                                    copyArtifacts(projectName: 'eNB-CI-TDD-Band40-B210',
+                                                  filter: 'test_results*.html',
+                                                  selector: lastCompleted())
+                                    if (fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) {
+                                        sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-TDD-Band40-B210.html"
+                                        archiveArtifacts artifacts: 'test_results-eNB-CI-TDD-Band40-B210.html'
                                     }
                                 }
                             }
                         }
-                        stage ("Test IF4p5 - FDD - Band 7 - B210") {
-                            steps {
-                                script {
-                                    try {
-                                        if ("MERGE".equals(env.gitlabActionType)) {
-                                            gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") {
-                                                build job: 'eNB-CI-IF4p5-FDD-Band7-B210',
-                                                   parameters: [
-                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                                       string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
-                                                       string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
-                                                       booleanParam(name: 'eNB_mergeRequest', value: true)
-                                                   ]
-                                            }
-                                        } else {
-                                            gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") {
-                                                build job: 'eNB-CI-IF4p5-FDD-Band7-B210',
-                                                   parameters: [
-                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                                       string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
-                                                       string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
-                                                       booleanParam(name: 'eNB_mergeRequest', value: false)
-                                                   ]
-                                            }
-                                        }
-                                    } catch (Exception e) {
-                                        currentBuild.result = 'FAILURE'
-                                    }
+                    }
+                }
+                stage ("Test IF4p5 - FDD - Band 7 - B210") {
+                    steps {
+                        script {
+                            if ("MERGE".equals(env.gitlabActionType)) {
+                                gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") {
+                                    build job: 'eNB-CI-IF4p5-FDD-Band7-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: true)
+                                       ]
+                                }
+                            } else {
+                                gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") {
+                                    build job: 'eNB-CI-IF4p5-FDD-Band7-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: false)
+                                       ]
                                 }
                             }
-                            post {
-                                // In case of any non-success, we are retrieving the HTML report of the last completed
-                                // slave job.
-                                // The only drop-back is that we may retrieve the HTML report of a previous build
-                                always {
-                                    script {
-                                        if (!fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) {
-                                            copyArtifacts(projectName: 'eNB-CI-IF4p5-FDD-Band7-B210',
-                                                          filter: 'test_results*.html',
-                                                          selector: lastCompleted())
-                                            if (fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) {
-                                                sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-FDD-Band7-B210.html"
-                                                archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-FDD-Band7-B210.html'
-                                            }
-                                        }
+                        }
+                    }
+                    post {
+                        // In case of any non-success, we are retrieving the HTML report of the last completed
+                        // slave job.
+                        // The only drop-back is that we may retrieve the HTML report of a previous build
+                        always {
+                            script {
+                                if (!fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) {
+                                    copyArtifacts(projectName: 'eNB-CI-IF4p5-FDD-Band7-B210',
+                                                  filter: 'test_results*.html',
+                                                  selector: lastCompleted())
+                                    if (fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) {
+                                        sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-FDD-Band7-B210.html"
+                                        archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-FDD-Band7-B210.html'
                                     }
                                 }
                             }
                         }
-                        stage ("Test IF4p5 - TDD - Band 40 - B210") {
-                            steps {
-                                script {
-                                    try {
-                                        if ("MERGE".equals(env.gitlabActionType)) {
-                                            gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") {
-                                                build job: 'eNB-CI-IF4p5-TDD-Band40-B210',
-                                                   parameters: [
-                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                                       string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
-                                                       string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
-                                                       booleanParam(name: 'eNB_mergeRequest', value: true)
-                                                   ]
-                                            }
-                                        } else {
-                                            gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") {
-                                                build job: 'eNB-CI-IF4p5-TDD-Band40-B210',
-                                                   parameters: [
-                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                                       string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
-                                                       string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
-                                                       booleanParam(name: 'eNB_mergeRequest', value: false)
-                                                   ]
-                                            }
-                                        }
-                                    } catch (Exception e) {
-                                        currentBuild.result = 'FAILURE'
-                                    }
+                    }
+                }
+                stage ("Test IF4p5 - TDD - Band 40 - B210") {
+                    steps {
+                        script {
+                            if ("MERGE".equals(env.gitlabActionType)) {
+                                gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") {
+                                    build job: 'eNB-CI-IF4p5-TDD-Band40-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: true)
+                                       ]
+                                }
+                            } else {
+                                gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") {
+                                    build job: 'eNB-CI-IF4p5-TDD-Band40-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: false)
+                                       ]
                                 }
                             }
-                            post {
-                                // In case of any non-success, we are retrieving the HTML report of the last completed
-                                // slave job.
-                                // The only drop-back is that we may retrieve the HTML report of a previous build
-                                always {
-                                    script {
-                                        if (!fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) {
-                                            copyArtifacts(projectName: 'eNB-CI-IF4p5-TDD-Band40-B210',
-                                                          filter: 'test_results*.html',
-                                                          selector: lastCompleted())
-                                            if (fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) {
-                                                sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-TDD-Band40-B210.html"
-                                                archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-TDD-Band40-B210.html'
-                                            }
-                                        }
+                        }
+                    }
+                    post {
+                        // In case of any non-success, we are retrieving the HTML report of the last completed
+                        // slave job.
+                        // The only drop-back is that we may retrieve the HTML report of a previous build
+                        always {
+                            script {
+                                if (!fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) {
+                                    copyArtifacts(projectName: 'eNB-CI-IF4p5-TDD-Band40-B210',
+                                                  filter: 'test_results*.html',
+                                                  selector: lastCompleted())
+                                    if (fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) {
+                                        sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-TDD-Band40-B210.html"
+                                        archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-TDD-Band40-B210.html'
                                     }
                                 }
                             }
diff --git a/ci-scripts/Jenkinsfile-tmp-ran b/ci-scripts/Jenkinsfile-tmp-ran
index 5fd2a095989..6795eab9b8b 100644
--- a/ci-scripts/Jenkinsfile-tmp-ran
+++ b/ci-scripts/Jenkinsfile-tmp-ran
@@ -61,6 +61,7 @@ pipeline {
     options {
         disableConcurrentBuilds()
         ansiColor('xterm')
+        lock (ciSmartPhoneResource)
     }
     // the following parameter options are commented out so it shows the ones
     // that you SHALL have to run the job.
@@ -184,7 +185,6 @@ pipeline {
             steps {
                 script {
                     dir ('ci-scripts') {
-                      lock (ciSmartPhoneResource) {
                         try {
                             echo "\u2705 \u001B[32m${testStageName}\u001B[0m"
                             withCredentials([
@@ -197,7 +197,6 @@ pipeline {
                         } catch (Exception e) {
                             currentBuild.result = 'FAILURE'
                         }
-                      }
                     }
                 }
             }
-- 
GitLab