From 8e1c541acf7fdf56a249f757c1594ad88ae69e7e Mon Sep 17 00:00:00 2001 From: George Joseph <gjoseph@digium.com> Date: Thu, 16 Aug 2018 11:08:21 -0600 Subject: [PATCH] CI: Add https credentials to gerrit checkouts If the review to be tested is in a project with restricted access, we need to use the jenkins user's gerrit https credentials when we do the checkout or the checkout will fail. Change-Id: I9dc9994763c5ebfeb9f1cff60fb53f6902b7fd5f --- tests/CI/gates.jenkinsfile | 57 ++++++++++++++++++++-------------- tests/CI/unittests.jenkinsfile | 56 ++++++++++++++++++++------------- 2 files changed, 68 insertions(+), 45 deletions(-) diff --git a/tests/CI/gates.jenkinsfile b/tests/CI/gates.jenkinsfile index ab0fd1cd14..c23114b211 100644 --- a/tests/CI/gates.jenkinsfile +++ b/tests/CI/gates.jenkinsfile @@ -79,33 +79,44 @@ pipeline { * * The Gerrit Trigger provides all the URLs and refspecs to * check out the change. + * + * We need to retrieve the jenkins2 gerrit https credentials + * in case this review is in a restricted project. */ - checkout scm: [$class: 'GitSCM', - branches: [[name: env.GERRIT_BRANCH ]], - extensions: [ - [$class: 'ScmName', name: 'gerrit-public'], - [$class: 'CleanBeforeCheckout'], - [$class: 'PreBuildMerge', options: [ - mergeRemote: 'gerrit-public', - fastForwardMode: 'NO_FF', - mergeStrategy: 'RECURSIVE', - mergeTarget: env.GERRIT_BRANCH]], - [$class: 'CloneOption', - honorRefspec: true, - noTags: true, - depth: 10, - shallow: true + withCredentials([usernamePassword(credentialsId: env.JENKINS_GERRIT_CREDS, + usernameVariable: 'gerrit_user')]) { + + checkout scm: [$class: 'GitSCM', + branches: [[name: env.GERRIT_BRANCH ]], + extensions: [ + [$class: 'ScmName', name: 'gerrit-public'], + [$class: 'CleanBeforeCheckout'], + [$class: 'PreBuildMerge', options: [ + mergeRemote: 'gerrit-public', + fastForwardMode: 'NO_FF', + mergeStrategy: 'RECURSIVE', + mergeTarget: env.GERRIT_BRANCH]], + [$class: 'CloneOption', + honorRefspec: true, + noTags: true, + depth: 10, + shallow: true + ], + [$class: 'PruneStaleBranch'], + [$class: 'BuildChooserSetting', + buildChooser: [$class: 'GerritTriggerBuildChooser'] + ] ], - [$class: 'PruneStaleBranch'], - [$class: 'BuildChooserSetting', - buildChooser: [$class: 'GerritTriggerBuildChooser'] + userRemoteConfigs: [ + [ + credentialsId: env.JENKINS_GERRIT_CREDS, + name: env.GERRIT_NAME, + refspec: env.GERRIT_REFSPEC, + url: env.GERRIT_PROJECT_URL.replaceAll("http(s)?://", "http\$1://${gerrit_user}@") + ] ] - ], - userRemoteConfigs: [ - [name: env.GERRIT_NAME, refspec: env.GERRIT_REFSPEC, url: env.GERRIT_PROJECT_URL ] ] - ] - + } sh "sudo tests/CI/setupJenkinsEnvironment.sh" } diff --git a/tests/CI/unittests.jenkinsfile b/tests/CI/unittests.jenkinsfile index 82bafff38e..332975c2aa 100644 --- a/tests/CI/unittests.jenkinsfile +++ b/tests/CI/unittests.jenkinsfile @@ -80,32 +80,44 @@ pipeline { * * The Gerrit Trigger provides all the URLs and refspecs to * check out the change. + * + * We need to retrieve the jenkins2 gerrit https credentials + * in case this review is in a restricted project. */ - checkout scm: [$class: 'GitSCM', - branches: [[name: env.GERRIT_BRANCH ]], - extensions: [ - [$class: 'ScmName', name: 'gerrit-public'], - [$class: 'CleanBeforeCheckout'], - [$class: 'PreBuildMerge', options: [ - mergeRemote: 'gerrit-public', - fastForwardMode: 'NO_FF', - mergeStrategy: 'RECURSIVE', - mergeTarget: env.GERRIT_BRANCH]], - [$class: 'CloneOption', - honorRefspec: true, - noTags: true, - depth: 10, - shallow: true + withCredentials([usernamePassword(credentialsId: env.JENKINS_GERRIT_CREDS, + usernameVariable: 'gerrit_user')]) { + + checkout scm: [$class: 'GitSCM', + branches: [[name: env.GERRIT_BRANCH ]], + extensions: [ + [$class: 'ScmName', name: 'gerrit-public'], + [$class: 'CleanBeforeCheckout'], + [$class: 'PreBuildMerge', options: [ + mergeRemote: 'gerrit-public', + fastForwardMode: 'NO_FF', + mergeStrategy: 'RECURSIVE', + mergeTarget: env.GERRIT_BRANCH]], + [$class: 'CloneOption', + honorRefspec: true, + noTags: true, + depth: 10, + shallow: true + ], + [$class: 'PruneStaleBranch'], + [$class: 'BuildChooserSetting', + buildChooser: [$class: 'GerritTriggerBuildChooser'] + ] ], - [$class: 'PruneStaleBranch'], - [$class: 'BuildChooserSetting', - buildChooser: [$class: 'GerritTriggerBuildChooser'] + userRemoteConfigs: [ + [ + credentialsId: env.JENKINS_GERRIT_CREDS, + name: env.GERRIT_NAME, + refspec: env.GERRIT_REFSPEC, + url: env.GERRIT_PROJECT_URL.replaceAll("http(s)?://", "http\$1://${gerrit_user}@") + ] ] - ], - userRemoteConfigs: [ - [name: env.GERRIT_NAME, refspec: env.GERRIT_REFSPEC, url: env.GERRIT_PROJECT_URL ] ] - ] + } sh "sudo tests/CI/setupJenkinsEnvironment.sh" } -- GitLab