【发布时间】:2022-08-02 14:00:37
【问题描述】:
在詹金斯,我有一份分析工作。用于签出和构建发送到目标分支的合并请求的作业。但是,将 gitlab 版本从 12.0.1 升级到 12.1.17 后,我无法签出源分支。
下面是我使用的 groovy 脚本。
#!/usr/bin/env groovy
def call() {
if (env.gitlabMergeRequestId) {
sh \"echo \'${env.gitlabMergeRequestId}\'\"
sh \"echo \'Merge request detected. Merging...\'\"
def credentialsId = scm.userRemoteConfigs[0].credentialsId
checkout ([
$class: \'GitSCM\',
branches: [[name: \"${env.gitlabSourceNamespace}/${env.gitlabSourceBranch}\"]],
extensions: [
[$class: \'PruneStaleBranch\'],
[$class: \'CleanCheckout\'],
[
$class: \'PreBuildMerge\',
options: [
fastForwardMode: \'NO_FF\',
mergeRemote: env.gitlabTargetNamespace,
mergeTarget: env.gitlabTargetBranch
]
]
],
userRemoteConfigs: [
[
credentialsId: credentialsId,
name: env.gitlabTargetNamespace,
url: env.gitlabTargetRepoHttpURL
],
[
credentialsId: credentialsId,
name: env.gitlabSourceNamespace,
url: env.gitlabSourceRepoHttpURL
]
]
])
} else {
sh \"echo \'No merge request detected. Checking out current branch\'\"
checkout ([
$class: \'GitSCM\',
branches: scm.branches,
extensions: [
[$class: \'PruneStaleBranch\'],
[$class: \'CleanCheckout\']
],
userRemoteConfigs: scm.userRemoteConfigs
])
}
}
标签: groovy gitlab jenkins-pipeline checkout jenkins-groovy