繁体   English   中英

Jenkins - Gitlab 整合如何建立MR的唯一源代码分支?

[英]Jenkins - Gitlab integration how to build only source branch of MR?

我有一个有效的 Gitlab - Jenkins 集成。 当在 Gitlab 上创建 MR 时,会在 Jenkins 中触发构建。这是通过 Gitlab 向 Jenkins 发送的请求完成的,其中包含大量信息,包括源分支和目标分支。

问题是我无法在 Jenkins 中找到从那里读取源分支的方法,因此当在 Gitlab 上创建 MR 时,Jenkins 会触发并使用自上次运行以来的新提交构建所有分支。 我是一个安静的回购协议,这会起作用,通常来自 MR 的分支是最后推送的分支。

但是,我现在有一个有很多推送、数百个功能分支的项目,很多人都在玩这些代码,我不想构建这些分支。 当创建 MR 时,我只想构建 MR 的源代码分支。

我怎样才能做到这一点? 我怀疑我应该能够以某种方式使用从 Gitlab 发送到 Jenkins 的请求中的信息来获取源分支。

综上所述,在Gitlab创建MR时,在Jenkins触发构建。但是,构建发现所有分支都更新了

07:10:46 Seen 529 remote branches
07:10:46  > git show-ref --tags -d # timeout=10
07:10:46 Multiple candidate revisions
07:10:46 Scheduling another build to catch up with MR_Builder

并将构建所有更新的分支。 我想阻止这种情况,只构建触发构建的 MR 的源分支

最后,我让它工作了。 在 Jenkins 工作的Source Code Management部分,我必须指定Branches to build ,使用来自 Gitlab 的变量,例如origin/${gitlabSourceBranch}

在此处输入图像描述

更好的方法,不需要对特定分支进行硬编码: https://docs.gitlab.com/ee/integration/jenkins.html#configure-the-jenkins-project

您通过合并请求事件使用触发器,在所有分支中设置它。 Jenkins 只有构建分支有合并事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM