当前位置: 首页 > 知识库问答 >
问题:

Jenkins 只有在每个子组件成功构建时才合并到 git master 中

东方乐
2023-03-14

我试图用詹金斯来保持我的主分支稳定,正如这里所描述的。基本上,开发人员将push检查到集成分支中,只有Jenkins实例从集成合并到master中。我的项目由多个RTL (verilog,vhdl等)子组件组成,每个子组件都有自己的测试平台,可以单独构建。git-plugin支持在运行测试之前基于更改的文件进行过滤,但是我希望在合并之前所有更改的子组件都能够成功构建。也就是说,如果我的目录结构看起来像:

src/
    A/
    B/
    C/
    share/
test/
    A/
    B/
    C/

如果只是 src/A/ 中的某些内容发生了变化,那么在将集成合并到 master 之前,只需要测试 A 成功。如果 src/share/ 更改,则在将集成合并到分支之前,需要运行测试 A、B 和 C。所有测试都可以并行运行。

我已经研究过使用fork-plugin和参数化-trigger-plugin,但看起来它们需要静态配置。有没有办法处理这种类型的动态依赖钻石,并让詹金斯合并到主节点中,只有当一切成功时?

提前感谢

共有1个答案

姬心思
2023-03-14

我认为你应该考虑使用gerrit来管理更改。Jenkins有一个Gerrit插件,它会自动构建和测试开发人员提交的更改。一旦更改被Jenkins验证,它们就可以被审查、批准和随后合并。

 类似资料:
  • 我的机器上安装了Jenkins版本1.480.3,电子邮件扩展插件2.28。 null 请有人帮助我,因为我真的不知道如何解决这个问题。

  • 问题内容: 我安装了Github插件并将Poll SCM设置为1分钟。下面是我的配置的图片。 因此,当我提交仓库时,一分钟后构建便开始了。 在我的github存储库上,我创建了一个webhook(但超时)和一个也不起作用的服务(我认为问题出在我的jenkins服务器上)。 但是缺少“将更改推送到GitHub时生成”复选框。 问题答案: 在GitHub插件v1.25.1版本上,触发器已重命名为 Gi

  • 问题内容: 我为作业配置了两个构建触发器(轮询SCM和FStrigger- MonitorFiles),比如说轮询计划为每日轮询(@daily),现在,如果轮询SCM检测到更改或FStrigger- MonitorFiles这样做是正常行为,则触发构建。 但是,如果两个都检测到更改,则每次触发器尝试触发构建时都会触发两次构建,那么我该如何实现每天将上述两个触发器的结果组合在一起并且仅触发/不触发一

  • 问题内容: 我正在使用Jenkins进行持续集成,并且我有一些项目具有上游和下游构建连接。我已经在每个项目的配置中选择了。但是,对于不稳定的构建,仍会触发构建后步骤。Jenkins版本为1.480.3。我想知道是否有人有类似的经历。 提前致谢 问题答案: 这是Jenkins 1.480.3中的一个现有问题。解决了1.509.1。吉拉的链接如下。 https://issues.jenkins-ci.

  • 目前,Jenkins 上有多个管道(A、B、C)和节点(X、Y、Z)。我们启用了 Throttle Concurrent Builds 插件,以确保管道中只有一个构建在单个节点上运行。 问题是,使用这种方法,来自不同管道的构建可能会发生冲突(例如,管道A可能已经在节点X上执行,我们不希望任何其他管道在节点X上执行,直到管道A完成)。TCB插件确保来自单个管道的多个构建不会在一个节点上运行,但它不会

  • 我们有一个项目,其中我们有几个Jenkins作业:一种类型的作业运行交付(a), 一个只进行编译和单元测试的程序(B) 和 运行集成测试、静态代码分析等(C)的人。 我们在四个 Jenkins 节点(主节点三个从节点)上运行,我们的作业是声明性管道作业的混合,并在 Jenkins 作业中手动单击。 我们一次只想为每个节点运行一个集成测试构建。然而,我们希望运行尽可能多的交付(A)和代码质量(B)构