我很长时间都在摸索解决这个问题的办法,但还没有想出好的解决方案,也许有人可以帮助我提供任何建议或良好的实践。
这里是:
我有三个 git 项目:compilerweb、compiler 和 common
- 这三个项目都指向git中的master分支
- compiler 和 common 是 java 项目,compilerweb 是 java web 项目
- 我设置了三个 jenkins 作业来单独编译每个项目
- 项目之间的依赖关系如下:(->) 表示依赖于:
- compilerweb -> 编译器 -> 通用
- 编译器项目作为独立项目启动,也被compilerweb用作库
- compilerweb 有集成测试
我想做的是配置一个持续集成模式,其中三个项目中任何一个的任何提交和推送都会启动完整的构建,以确保 整个项目的稳定性,但我不确定要采取什么程序或策略
我首先尝试的是以下内容:
- 如果在 common 上检测到推送,则编译 common,然后编译器,最后编译器 web 启动集成测试
- 如果在编译器中检测到推送,则编译编译器,最后编译编译器网络以启动集成测试
- 如果在compilerweb中检测到推送,则编译启动集成测试的compilerweb
但是在这种模式下,例如,如果开发人员同时处理三个项目,然后他在compilerweb项目上执行提交和推送,那么将启动完整的构建,而无需对common和compiler进行更改构建将会失败。
当项目之间存在依赖关系并且所有项目都指向主分支时,实现持续集成的标准方法是什么?
非常感谢您的任何建议或答复! :)
最佳答案
配置一项作业以启动另一项作业。
当common成功构建后,启动编译器。
当编译器成功完成时,启动compilerweb
您可以在“构建后操作”>>“构建另一个项目”中进行配置
配置为在推送到任何 git 存储库时触发编译器作业。
这样,无论推送发生在哪里,每次都会运行 3 个作业。
您可以向作业添加延迟,以避免提交和推送所有 git 存储库时出现问题。
延迟触发作业
http://myjenkins/job/jobname/build?delay=15
另一种方法是,如果提交有或没有特定消息,则仅运行构建。为此,您需要与开发人员交谈。 如果他们要进行需要在 3 个存储库上提交的更改,请仅在最后一次提交时开始构建。
例如:
将脚本配置为如果提交消息中包含“ON HOLD”一词,则不启动构建。
关于java - Jenkins中项目之间存在依赖关系时如何实现持续交付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47143694/