管道和释放与快照构建



我想使用jenkins管道进行连续集成,而不是CD,我仍在使用Maven的快照和释放模型。如何导致管道执行释放构建或快照构建,具体取决于某种条件?另外,您如何仅触发某些事情,例如有时仅在其他平台上进行测试,集成测试等?我不希望每次提交时都会在窗口上进行长时间的测试和资源饥饿的启动。

欢迎来到连续整合的不太平淡世界。当您使用手动触发构建服务器上的传统方式时,您可以选择是否构建

  • 可以玩的快照并向同事展示
  • 版本,如果它通过所有测试,则应进行生产。

在纯CI中,每个提交都可能是可能的释放,因此上述两个提交变得困难。您可以 - 而且我有些人这样做 - 只有在自动进行构造构建建筑物时才会产生快照构建。然后,这些构建仅用于反馈,但并不意味着以后使用。这也使您更容易在硬盘投诉时删除它们。在这种情况下,您将开始手动构建版本。

如果您想变得更像CI,则可以将每个提交都视为潜在发布并给出一个发行号。您是否运行所有测试取决于您。如果您的测试花费太长,您可以告诉Jenkins您的自动管道只能达到" alpha"级别,并且在必要时仍手动启动" alpha to beta"管道。

有些人会说您应该始终运行所有测试并保留所有版本,并且硬件便宜,并且您可以轻松建立一个集群。这些人可能从未见过大型官僚公司的内部。

我们这样做的一种方式是基于分支名称。我们在GIT中有释放分支,例如v1.0_release,并且还具有整数分支:v1.0_integ

我们在分支名称上设置了带有when子句的多支管线。当分支名称为 *_release时,我们将其构建到释放伪影库。其他分支转到快照仓库。

任何其他分支都被推到git(例如特征分支)时,它们也是建造的,并且根据应用程序的不同,我们通常只是在Jenkins中存档这些构建。这为开发人员提供了他们使用的任何分支和轻松访问工件的快速反馈。

开发人员可以在他们想要的任何分支中使用任何代码,并且当他们喜欢代码并准备好建立释放候选人时,他们推到发行分支,詹金斯(Jenkins)只是照顾它。

我决定的是:我没有在没有集成测试的情况下区分构建。他们会跑得很长时间,特别是他们在Windows和Linux上运行,但不确定我是否有理由以另一种方式进行操作?

关于区分快照和释放构建:Maven使用配置文件在发行版中执行特殊操作。但是,当它在部署到快照与发行存储库之间的决定时,Maven将使用版本编号检查在哪里部署。因为您无法根据当前项目版本激活配置文件,所以我决定将其合并,因为如果您有快照版本,您当然不会发布,并且如果您的POM具有发布版本,则不会构建快照。因此,通过手动将POM设置为发行版并提交发行版来触发发布,这时CI将读取POM,检查版本是否以" -snapshot"结尾,如果没有,则会激活释放配置文件,并仅执行其他发行版本,仅执行其他版本,就像它将部署Maven站点。

最新更新