我在 Mercurial 存储库中托管了一个 Gradle 多项目。我想以这样的方式设置我的 Jenkins,如果我只将更改提交到 1 个子项目,那么只有那个子项目将被构建并发布到我的 Nexus 存储库。
有人可以给我一个提示吗?还是完全有可能?
我在 Mercurial 存储库中托管了一个 Gradle 多项目。我想以这样的方式设置我的 Jenkins,如果我只将更改提交到 1 个子项目,那么只有那个子项目将被构建并发布到我的 Nexus 存储库。
有人可以给我一个提示吗?还是完全有可能?
我们有这样的工作。
我们在 Jenkins 中为每个 gradle 子项目创建一个项目。在 Jenkins 配置中,我们只构建子项目,方法如下:
gradle clean :<subproject>:build
我们仍然存在一个问题,即整个项目的所有签入都会触发该作业。我会将 Jenkins 配置为仅在签入子项目时才构建,但不知道如何指定。
将我们未来的最终解决方案留在这里。
我们为每个子项目创建了一个单独的 Jenkins 作业。Jenkins 的 Mercurial 插件允许指定“模块”:
通过在存储库中指定逗号或空格分隔的“模块”列表来减少不必要的构建。模块是该项目所在的存储库中的目录名称。如果设置了此字段,指定模块之外的更改将不会触发构建(即使由于 Mercurial 限制,整个存储库无论如何都已签出。)
这样我们的工作只有在监控子项目发生变化时才会被触发。
我猜你需要在 jenkins 中为每个子项目创建一个项目。
其他选择是查找是否有办法拦截 repo 同步并查看哪些子项目已更改并动态进行构建。