我们花了几天时间尝试不同的方法来接受合并请求时触发Jenkins。不幸的是,我无法在我们的系统上工作。我尝试过Jenkins方面的不同插件来触发GitLab,但它们似乎也无法工作。添加参数化字符串并将令牌添加到URL的末尾,我已经尝试了所有这些 - 可能不正确,我不确定。
我想要一个很好的配置来告诉我我必须设置哪些设置以及使用哪些插件。我已经上传了大多数用于webhooks和合并请求插件的插件,但它们都没有真正起作用。
然后,接下来的问题是如何调试GitLab到Jenkins的内容?你看系统日志吗?那里似乎有很多东西,和/var/log/Jenkins/jenkins.log文件一样。
非常感谢任何帮助/建议。
GitLab版本:7.12.2 詹金斯版本:1.620
答案 0 :(得分:0)
我知道这是一个老问题,但这是我使用declarative pipelines在GitLab CE 8.13.12和Jenkins 2.46.2上执行此操作的设置,以及Gitlab插件1.4.5和Gitlab Hook插件1.4.2 。这些步骤也可能适用于最新版本。
然后,管道脚本看起来像这样 MR
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: [
[
name: env.gitlabTargetNamespace,
url: env.gitlabTargetRepoSshURL
],
[
name: env.gitlabSourceNamespace,
url: env.gitlabSourceRepoSshURL
]
]
])
主
checkout([
$class: 'GitSCM',
branches: [[name: '*/master']],
extensions: [
[$class: 'PruneStaleBranch'],
[$class: 'CleanCheckout']],
userRemoteConfigs: [[url: '<my-git-url>']]])
这给了我两份工作。 MR作业依赖于GitLab插件来定义要检出,合并和构建的源和目标存储库和分支。主作业只会构建主仓库。
最后一步是在GitLab中为repo配置webhook。当您在GitLab中制作webhook时,它会询问以下信息:
你应该完成!