我知道这是一个老问题,但这里是我的设置使用declarative pipelines上GitLab CE 12年8月13日和詹金斯2.46.2这样做,和Gitlab插件1.4.5和Gitlab钩子插件1.4.2。这些步骤也可能适用于最新版本。
- 两个单独的管道作业
- 第一任务是专门为MR建立
- 第二个是用于主分支/回购其中MR被合并到
- 两种作业有生成触发器“生成当更改被推送到GitLab”启用
- MR作业有foll由于事件已启用
- 主作业不仅具有推送事件触发有效
- 评论(以及一些评论),但也有在高级选项来过滤分支(我只用主的名字)
然后,管道脚本这个样子 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中配置webhooks以进行回购。当您在GitLab一个网络挂接,它会要求提供以下信息:
- 端点URL(这是在詹金斯任务中发现了下生成触发部分)
- 活动(符合从詹金斯作业到事件这里)
- SSL验证(取决于你和你的网络配置)
而且你应该做的事!
你使用的是GitLab社区版还是企业版?如果您使用的是Enterprise Edition,则可以按照以下文档进行操作: http://docs.gitlab.com/ee/integration/jenkins.html它具有关于配置Jenkins CI服务的说明。不幸的是,Community Edition没有这项服务。 –