管道和发布与快照构建

时间:2017-11-21 13:44:37

标签: java maven jenkins continuous-integration

我想使用jenkins管道进行持续集成,但不是cd,我仍在使用maven的快照和发布模型。 如何根据某些条件使管道执行发布版本或快照构建? 另外,有时候你如何触发其他平台上的测试,集成测试等等?我不希望每次提交都会在Windows上进行长时间测试和资源饥饿启动。

3 个答案:

答案 0 :(得分:0)

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

  • 与同事一起玩耍和节目的快照
  • 一个版本,如果它通过了所有测试就应该投入生产。

在纯CI中,每次提交都应该是可能的释放,因此上述两者之间的区别变得困难。您可以 - 我有些人这样做 - 只在生成自动commit-triggers-build构建时生成SNAPSHOT构建。然后构建仅用于反馈,但不打算稍后使用。当您的硬盘投诉时,这也可以更容易地删除它们。在这种情况下,您将手动启动发布版本。

如果您想要更像CI,您可以将每个提交视为潜在版本并提供版本号。是否运行所有测试取决于您。如果您的测试耗时太长,您可以告诉Jenkins您的自动管道只能运行到“alpha”级别,并且必要时仍然会手动启动“alpha to beta”管道。

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

答案 1 :(得分:0)

我们这样做的一种方法是基于分支名称。我们在git中发布分支,例如v1.0_release,我们也有整合分支:v1.0_integ

我们在分支名称上设置了一个带有when子句的multibranch管道。当分支名称为*_release时,我们将该构建提供给发布工件repo。其他分支转到快照仓库。

任何时候任何其他分支被推送到git(例如功能分支),它们也是构建的,并且根据应用程序,我们通常只是将这些构建存档在Jenkins中。这使开发人员可以快速反馈他们使用的任何分支并轻松访问工件。

开发人员可以使用他们想要的任何分支中的任何代码,当他们喜欢代码并准备构建候选版本时,他们会推送到发布分支,而Jenkins只需要处理它。

答案 2 :(得分:0)

我的决定是:我不区分有和没有集成测试的构建。他们会长时间运行,尤其是他们在Windows和Linux上运行,但不确定我是否有理由以另一种方式进行操作,您的想法是什么?

至于区分快照和发布版本:maven使用配置文件对版本执行特殊操作。但是,当它用于在distributionManagement中部署到快照与发布存储库之间进行决策时,maven将使用版本号来检查部署位置。因为您无法根据当前项目版本激活配置文件,所以我决定将其合并,因为如果您有快照版本,则肯定不会发布,如果您的pom具有发行版本,则不会构建快照。因此,通过手动将pom设置为发布版本并提交来触发发布,此时ci将读取pom,检查版本是否以“-SNAPSHOT”结尾,如果没有,将激活发布配置文件并仅执行其他发布,喜欢它会部署一个maven网站。