在 Gitlab 中合并请求后运行 Jenkins 作业

Posted

技术标签:

【中文标题】在 Gitlab 中合并请求后运行 Jenkins 作业【英文标题】:Running Jenkins job after merge request in Gitlab 【发布时间】:2018-01-07 02:37:48 【问题描述】:

我正在尝试使用 Gitlab 网络挂钩在使用管道脚本推送提交/打开合并提交后触发 Jenknis 中的作业。

出于某种原因,Jenkins 总是检查主分支并构建它。如何 我可以指定使用 Groovy 脚本构建哪个分支吗?

我尝试使用 Gitlab POST 请求中的环境变量,但它仍然始终使用 master 分支:

checkout changelog: false, poll: false, scm: [$class: 'GitSCM' , branches: [[name:'origin/$env.gitlabSourceBranch']], browser: [$class 'GitLab', repoUrl: 'some-git-repo.com', version: 9.0], doGenerateSubmoduleConfiguration: false, extensions: [[$class: 'SubmoduleOption' disableSubmodules: false, parentCredentials: true, recursiveCredentials: true, recursiveSubmodules: true, reference: '', trackingSubmodules: false], [$class: 'PrebuildMerge', options: [fastForwardMode: 'FF', mergeRemote: '', mergeTarget: 'origin/$env.gitlabTargetBranch']]], submodulecfg: [], userRemoteConfigs: [[credentialsId: '12345', url: 'git@some-git-repo.com:A/repo.git']]]

(我使用 sn-p 生成器生成了这个命令)

【问题讨论】:

请编辑您的帖子并添加您的代码,您目前尝试过的内容,以便我们可以帮助您更快地解决您的问题。 你有没有在脚本中包含你的另一个分支来执行,你能显示你写的脚本吗 【参考方案1】:

您可以在 Jenkins 中使用“通用 Webhook 触发器”插件。 它允许您从 Gitlab 发送的 POST 请求中获取分支名称,将其映射为变量并在您的管道中使用它。

配置:

管道内部:

stage('Clone sources') 
        steps 
            git credentialsId: '...', poll: false, branch: $branch, url: '...'
        
    

完整示例位于:https://pillsfromtheweb.blogspot.com/2021/10/trigger-jenkins-on-merge-request-from.html

【讨论】:

以上是关于在 Gitlab 中合并请求后运行 Jenkins 作业的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins+Gitlab自动打TAG

在 GitLab Pipelines 中,有没有办法在分离合并请求时运行管道?

来自 gitlab-ci 的状态不再显示在 gitlab 合并请求中

如何让 Gitlab CI 管道始终运行一些作业,而其他作业仅在合并请求上运行?

为合并请求触发的管道运行应用 GitLab CI/CD 管道更改

在 GitLab CI 中,合并请求的目标分支是不是有变量?