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 |