【发布时间】:2019-11-06 15:22:39
【问题描述】:
首先:这里已经回答了多个类似的问题,但没有一个可以真正帮助我解决我的问题。
我想我需要一些帮助来创建高级 CI 管道。我正在处理的项目分为多个存储库,每个存储库管理一个特定方面(Web 应用程序、常用方法等)。我目前正在创建一个 CI 工作流来管理功能分支中的集成测试。我想到了以下工作流程(和问题):
- 在名为“feature1”的相应功能分支中的多个不同项目(例如 UI 更改和后端功能)中开发了一项新功能
- 提交更改后,Jenkins 会通过 web-hook 触发并分别构建每个功能分支
- 因此,我需要一种方法来收集具有此确切功能分支“feature1”的所有存储库中的所有更改并分别构建它,对于所有其他依赖项,应使用主分支
- 存储库的数量在不久的将来可能会增加,因此我不想在管道脚本中硬编码所有存储库 URL
- 每个存储库都是一个 maven 项目,因此构建功能分支并将其安装到本地 jenkins 存储库将覆盖潜在的“主工件”,因此可能会破坏其他存储库的依赖关系
我正在努力寻找最有效和最合理的策略来管理这个项目结构。更改 maven 版本控制以将分支名称合并到版本标记中可能是明智的,但这会使所有存储库中的依赖管理更加复杂。
如果有人知道这个问题的巧妙解决方案,或者可以推荐一个解决这个问题的其他策略,请告诉我。
【问题讨论】:
-
“每个存储库都是一个 maven 项目,因此构建一个功能分支并将其安装到本地 jenkins 存储库中将覆盖潜在的“主工件”,因此可能会破坏其他存储库的依赖关系” i> 我不认为这是准确的。同一代码库的每个分支都有一个唯一的工件版本。
-
您是否打算在某处部署 UI 和后端工件以便运行集成测试?你的策略是什么?
-
@OSGIJava 感谢您的反馈。但是如何区分具有相同 groupid、artifactid 和(快照)版本的两个工件?整个东西被打包成一个war文件,部署在jetty服务器上进行集成测试。
-
如果您触发同一项目的多个构建,那么它将覆盖旧构建。这不是你想要的吗?您不想构建和部署最新的代码吗?
-
@OSGIJava 不是真的,我想部署功能分支更改的项目,以便在将功能合并到 master 之前确保集成测试成功运行
标签: maven jenkins continuous-integration jenkins-pipeline