git 上一个 java 工程有好几个子工程,要是开发只改了一个子工程的代码然后 push,触发 jenkins 构建,这个项目的所有子工程都构建了一遍了。我想过每个子工程配一个 jenkins job,但是所有的 job 会被同时触发。求大佬指点。怎么才能开发改了子工程的代码就只构建那几个子工程
![]() | 1 heheda11 2021-07-06 18:17:23 +08:00 install 你想要构建的模块不就行了? |
![]() | 2 yzding 2021-07-06 18:21:20 +08:00 via Android 每个子工程拆分成对应分支开发,就是开发切换麻烦了点 |
![]() | 3 NizumaEiji 2021-07-06 19:27:06 +08:00 gitlab-ci 的 only changes? |
![]() | 4 shyling 2021-07-06 19:31:46 +08:00 一般 ci 都是全新的构建吧。 如果你的子项目之间没有依赖,不太理解为什么放在一起。 如果有依赖,那怎么只构建改动的了的呢,加 build 缓存? |
![]() | 5 lamesbond OP @shyling 我也很无奈,项目 4 年转手 5,6 次了,现在接手的还是个新人,十几个子项目只有一半能用,但是其他的不敢删不敢动 |
![]() | 7 daliu 2021-07-07 20:18:57 +08:00 弄个.env ,然后在 ci 里面加载这个文件。里面有你想要编译的 module 。当你想触发编译的时候,提前修改这个.env 。mvn -pl modulename -am |
![]() | 8 lamesbond OP gitlab 的 webhook 的 request body 里有这个东西: "modified": [ "platform-gateway/Jenkinsfile" ], 可以在 jenkinsfile 里解析 json,获取 modified 参数,就知道哪个子模块修改了,然后做 if else |