上演快照文物的部署,Maven和詹金斯(Staged deployment of snapshot

2019-10-18 04:15发布

问题描述

我们这些视对方几个多模块项目。 因此,像这样:

  • 消息
  • 骨架
  • othercomponent

他们有单独的源代码控制库,并让说,这里面的消息othercomponent子模块使用束从框架的子模块。 所有这些项目都是基于OSGI多模块Maven项目。 他们都有一个服务器的一部分,和单源GUI部分(Eclipse的RAP + RCP)。 因此,这结束了在三步行家构建基于所有这些多模块项目(因为第谷建立不能与普通的旧Maven的混合版本)的:

  • 大厦的服务器部分
  • 大厦RAP GUI部分
  • 大厦RCP GUI部分

最后还有一个最终产品的多模块Maven项目(让我们称之为它ourproduct),它使用的消息框架othercomponent。 ourproduct具有比其他三个,它们具有共同的版本号不同的版本号项目。

我们建立了整个事情与詹金斯和就业相互触发取决于依赖关系树。 该公司决定使用快照,以获得3个框架项目开发和ourproduct开发商之间更加直接和快速反馈。 这可能是一个不错的主意,但有一个很大的问题。

如果建筑物链中的东西坏了,比快照库中包含的消息框架othercomponent的快照,不能一起工作。 这样ourproduct的开发人员必须等待工作快照集(否则,他们甚至不能编译一些时间)。 另一问题是,在生成过程中的快照集也不尽一致。

理念

对于消息框架othercomponent存在詹金斯一个明确的结束工作 。 如果完成,那么快照集必须是工作,所以ourproduct团队可以使用它。 所以,我需要以某种方式收集由构建链创建快照,并将它们部署只有在整个构建链是成功的。

  • 是否有任何现有的可能性要做到这一点?

我的想法是简单地改变工作只作只安装和不部署 。 那么,在年底,我可以看看在本地Maven回购内置快照,并通过脚本部署它们。

  • 有Maven的一些分期概念(也许仅适用于Nexus亲)。 它说的快照什么?

任何想法是值得欢迎的。 但我不能改变使用快照的事实。 因此在说服我使用的版本,并没有快照没有用。

Answer 1:

我已经找到一个很好的解决方法。 采取的步骤:

  1. 构建步骤必须部署到一个临时文件夹,而不是使用altDeploymentRepository参数正常的目标库(见http://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html )

    MVN部署-DaltDeploymentRepository = stagingFolder ::默认::文件:/// C:/ mytempfolder

  2. 运行任意数量的与此设置生成步骤 ,和文物收集的文件夹中。 你甚至可以恢复建立没有问题。 您可以覆盖工件(我并不推荐它)

  3. 你必须完成所有构建步骤(见后运行以下命令http://mojo.codehaus.org/wagon-maven-plugin/copy-mojo.html )。 这其中上传了该文件夹中即暂时收集所有的文物:

    MVN org.codehaus.mojo:车皮行家-插件:复制-Dwagon.source =文件:/// C:/ mytempfolder -Dwagon.target = http://somerepository.com/repositories/snapshots -Dwagon.targetId = idreferredinsettingsxmltogetauthorization

重要的提示

该车的目标应该一个文件夹,其中没有POM文件中运行(所以它必须在没有项目运行)。 否则,有一个与fromDir参数一个奇怪的错误。

已知限制

  1. 构建步骤应该运行使用相同的本地仓库,因为如果台阶需要通过其他文物制作的器物,它们可以在本地存储库中找到它。
  2. 该解决方案不读POM去该工件应该被上传的资料库。 这就是今天连线到马车命令。 但我可以用它现在生活:)


Answer 2:

詹金斯允许收集文物的其他构建(如果它们标记这些在他们的项目配置)。 集成测试可以使用结构来收集快照需要一次集成测试完成构建并只上传了一组捆的Nexus。 你可能会通过检查从OSGI bundles.I舱单建议使用的jar签名作为分期标记物,因为它很容易通过DEVOPS法医分析开始。

BTW的Nexus Pro拥有一个临时的概念。



文章来源: Staged deployment of snapshot artifacts with Maven and Jenkins