From: George Joseph Date: Thu, 16 Aug 2018 17:08:21 +0000 (-0600) Subject: CI: Add https credentials to gerrit checkouts X-Git-Tag: 15.6.0-rc1~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee4b07f66ffde048ddd7c54a51b42afbb4925655;p=thirdparty%2Fasterisk.git 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 --- 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" }