Maven将artefacts发布到远程存储库并在artefact版本中使用$ release

时间:2014-08-15 10:50:33

标签: maven jenkins

想知道人们如何通过DEV-AQA-CQA-RELEASE等环境生命周期管理他们的项目文物,以及是否有一些最佳实践可供遵循。

我使用Jenkins构建服务器来构建我的项目(代码检出然后maven构建)。我的文物都有1.0.0-SNAPSHOT版本,并发布到构建服务器上的本地.m2仓库。还有Jenkins作业使用这些人工制品重建DEV系统(在同一台服务器上)。只要有人检入代码,项目构建就会自动生成。 DEV构建在每晚自动化。

在某些时候,我的首席开发人员确定我们的项目适合转到AQA(不同服务器上的第一级测试环境)。

为此,我需要将文物标记为版本1.0.0-1并发布到远程AQA存储库(它实际上是一个Nexus存储库)。

Maven部署插件听起来像是正确的方法,但是如何将版本号更改为1.0.0- $ release(其中$ release只是从1开始递增的数字)? Maven / Nexus是否能够管理$ release的价值,或者我需要在我的项目中使用一个简单的属性文件来存储/更新上次使用的$ release。

此外,有人测试AQA并确定其适合转向CQA(第二次测试环境)。这是向AQA推广的。所以我的要求是从AQA Nexus回购中复制人工制品并发布到CQA Nexus回购。

同样,在CQA之后,还有一个推广到RELEASE'工作也是。

我认为在推广期间版本价值保持不变。阶段。我希望AQA回购看到所有版本1-50,但CQA只有25和50,然后RELEASE只有50,例如。

我可以找到大量有关Maven插件/目标/阶段的信息,但很少关于在直接开发环境之外如何或在何处使用的规范方法。

感激地收到任何建议。

2 个答案:

答案 0 :(得分:0)

暂存/推广超出了Maven的范围。部署/上载到远程存储库后,该系统负责完成发布周期。如果您使用Nexus,请阅读本章有关暂存的信息:http://books.sonatype.com/nexus-book/reference/staging.html

答案 1 :(得分:0)

构建数字只是构建数字。它们不是促销/登台号码。

您应该提出另一种跟踪促销活动的方法,否则可能会因为“知道”构建10.1.4-2与10.1.4-6相同而感到困惑。当然,所有与Maven相关的软件都会将这两个版本视为不同版本。

此外,如果某人“抓取”了错误的构建副本,您在构建号码中管理分段的方式将会增加混淆。好像你没有杀死所有的10.1.4-2版本,那么有人可能会得到一份没有意识到构建已被提升到10.1.4-6的副本。这意味着,对于“最后”的分段号码,最有可能被抓取的是,你必须做两件事(这是不可能的组合)

  1. 删除所有旧的暂存号码,将其更新为新的暂存号码。
  2. 确保没有旧登台号的副本转发更新。
  3. 由于人们通常可以在没有被跟踪的情况下复制文件,或者在“更新”时间内无法访问所述文件,或者到达所有文件之间的时间不能同时进行,因此这样的系统注定要失败。

    相反,我建议(如果您必须按文件跟踪),将相同的文件放在不同的“暂存目录”中。这通过文件是否存在于某个目录中来定义发布网关,并清楚地表明它与整个过程中的文件相同。此外,很容易让各个阶段的验证轮询各自的目录(如果你真的希望,你可以编写Jenkins任务从一个目录升级到另一个目录)。