jenkins构建触发器之Build whenever a snapshot dependency is built
整合项目上线时,运维大哥创建好Jenkins任务后,发现在构建BOSS开工、智能出行、整合这三个项目其中一个Jenkins任务时,会同时构建其他的Jenkins任务。
先介绍一下大背景儿:整合项目是一个新项目。整合项目是将BOSS开工、智能出行两个业务线系统所具有的公共的业务功能整合到一起,减轻运营工作量和技术维护成本。这样,系统间的逻辑结构变成了BOSS开工、智能出行会依赖整合系统的一部分接口,整合系统会依赖BOSS开工、智能出行的一部分接口。这些局域网系统是用dubbo实现rpc调用,所以,项目间会相互依赖彼此的接口契约jar。
如下图,三个构建任务test_omsbase-rpcapi-module、test_bosskg-interface-module、test_car-pub-module-interface所构建的是三个项目的接口契约module,通过构建只是maven install到Jenkins服务器的本地仓库,给这三个项目的应用服务程序提供jar依赖。
整合之前发版时构建BOSS开工、智能出行的任务时都很正常。为什么加上整合项目的Jenkins任务后,会出现这种“构建乱象”呢?
如下是任务构建时出现的“乱象”:
解决办法:
在Jenkins任务配置的“构建触发器”里,去掉勾选Build whenever a snapshot dependency is built。
原来,BOSS开工、智能出行、整合这三个项目的artifact的版本都是snapshot(IDEA新建工程时,pom文件默认指定的项目版本是1.0.1-SNAPSHOT),这个选项的意思是:只要快照依赖任务被构建,就构建当前任务。
就是说,[P1]项目依赖[P2]项目的一个快照版本的module[M],如果[P1]和[M]都有Jenkins构建任务时,那么,当[M]任务构建时,就会触发[P1]任务的构建。
所以,就不难理解上文的“构建乱象”了。
如果不需要这样,那解决办法,自然是不启用这一项了。当然,把项目版本变更成release也未尝不可。
附Jenkins几种构建触发器(Build Triggers)解释:
Build whenever a snapshot dependency is built
当job依赖的快照版本被build时,执行本job。
Build after other projects are built
当本job依赖的job被build时,执行本job
Build periodically
隔一段时间build一次,不管版本库代码是否发生变化。
Poll SCM
隔一段时间比较一次源代码如果发生变更,那么就build。否则,不进行build。
whenever
英 [wenˈevə(r)] 美 [wenˈevər]
conj.
在任何…的时候;无论何时;在任何…的情况下;每当;每次;别的什么时候(也可以);任何时间(都行)
相关文章
- Jenkins + Gitee 实现代码自动化构建 (超级详细)
- Jenkins安装和持续集成环境配置
- Jenkins详细安装与构建部署使用教程[通俗易懂]
- Jenkins自动构建部署项目到远程服务器上
- 使用CentOS7安装Jenkins
- Jenkins安装_ansible jenkins
- jenkins自定义构建参数_jenkins怎么构建项目
- jenkins自动触发构建_触发器定时删除
- Jenkins下载_windows安装jenkins
- 4.Jenkins进阶之分布式架构环境配置
- Jenkins+Docker 实现一键自动化部署项目!步骤齐全,少走坑路
- Jenkins自动前端代码
- Jenkins 插件
- Jenkins+GitLab Webhooks自动构建项目
- Jenkins配置邮箱接收构建通知
- Jenkins集群配置/并发构建
- Jenkins(hudson)插件记录
- Jenkins 常用插件介绍
- 使用Jenkins进行自动构建
- 使用python-jenkins管理Jenkins
- Jenkins 构建过程中提示 GPG 错误
- 通过Jenkins持续构建flask项目
- Selenium4+Python3系列(十三) - 与docker中的jenkins持续集成
- jenkins harbor webhook自动触发构建
- Jenkins集群配置/并发构建
- 用 Jenkins 构建 CI/CD 流水线
- jenkins配置自动构建部署