【发布时间】:2013-05-18 22:13:42
【问题描述】:
问题描述
我们有几个相互依赖的多模块项目。所以是这样的:
- 消息传递
- 框架
- 其他组件
他们有单独的源代码控制库,可以说,messaging 和 othercomponent 中的子模块正在使用来自 framework 子模块的捆绑包。所有项目都是基于 OSGI 的多模块 Maven 项目。它们都有一个服务器部分和一个单一来源的 GUI 部分(Eclipse RAP+RCP)。因此,所有这些多模块项目都以基于 maven 的三步构建结束(因为 Tycho 构建不能与普通的旧 Maven 构建混合):
- 构建服务器部分
- 构建 RAP GUI 部分
- 构建 RCP GUI 部分
最后还有一个 end product 多模块 maven 项目(我们称之为 ourproduct),它使用 messaging、框架和其他组件。 ourproduct 项目的版本号与其他三个不同的版本号相同。
我们使用 Jenkins 构建整个事物,作业根据依赖关系树相互触发。该公司决定使用快照在 3 个框架项目开发人员和 ourproduct 开发人员之间获得更直接、更快速的反馈。这可能是个好主意,但是有一个大问题。
如果在构建链中出现问题,则快照存储库包含 messaging、framework 和 othercomponent 的快照,它们不能一起工作.这样,ourproduct 的开发人员必须等待一个工作快照集(否则他们甚至无法编译一些时间)。另一个问题是,在构建过程中,快照集也不一致。
想法
对于 messaging、framework 和 othercomponent,Jenkins 有明确的最终任务。如果这完成了,那么这组快照必须工作,所以 ourproduct 团队可以使用它。 所以我需要以某种方式收集构建链创建的快照,并仅在整个构建链成功时部署它们。
- 是否有现成的可能性?
我的想法是简单地将作业更改为仅 install 而不是 deploy。然后最后我可以在本地 maven repo 中查找构建的快照,并通过脚本部署它们。
- Maven 有一些暂存概念(可能仅适用于 Nexus pro)。它有关于快照的内容吗?
欢迎任何想法。但是我无法改变使用快照的事实。所以说服我使用版本而不使用快照是没有用的。
【问题讨论】:
-
不确定部署部分,但 Jenkins Copy Artifact Plugin 可能有助于收集匹配的“良好”构建结果。
标签: maven jenkins snapshot staging tycho