Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 管道和版本与快照构建_Java_Maven_Jenkins_Continuous Integration - Fatal编程技术网

Java 管道和版本与快照构建

Java 管道和版本与快照构建,java,maven,jenkins,continuous-integration,Java,Maven,Jenkins,Continuous Integration,我想使用jenkins管道进行持续集成,但不是cd,我仍然在使用maven的快照和发布模型。 如何使管道根据某些条件执行发布版本或快照版本? 另外,您是如何触发某些事情的,比如在其他平台上进行测试、集成测试,等等,只是有时候?我不希望每次提交时都要在windows上进行长时间的测试和耗费大量资源的启动。欢迎来到不那么平凡的持续集成世界。在生成服务器上使用手动触发生成的传统方式时,可以选择是否生成 一张快照,供同事使用和展示 一个版本,如果它通过了所有的测试,应该投入生产 在纯CI中,每个提交

我想使用jenkins管道进行持续集成,但不是cd,我仍然在使用maven的快照和发布模型。 如何使管道根据某些条件执行发布版本或快照版本?
另外,您是如何触发某些事情的,比如在其他平台上进行测试、集成测试,等等,只是有时候?我不希望每次提交时都要在windows上进行长时间的测试和耗费大量资源的启动。

欢迎来到不那么平凡的持续集成世界。在生成服务器上使用手动触发生成的传统方式时,可以选择是否生成

  • 一张快照,供同事使用和展示
  • 一个版本,如果它通过了所有的测试,应该投入生产
在纯CI中,每个提交都应该是一个可能的版本,因此很难区分上述两个版本。在执行自动提交触发器生成生成时,您只能生成快照生成,有些人就是这样做的。然后构建只用于反馈,而不用于以后。这也使得在硬盘出现问题时更容易删除它们。在这个场景中,您将手动启动发布版本

<>如果你想变得更像CI,你可以把每个提交看作是潜在的发布,并给出一个发布号。是否运行所有测试取决于您。如果您的测试花费的时间太长,您可以告诉Jenkins,您的自动管道只运行到“alpha”级别,如果需要,“alpha到beta”管道仍然是手动启动的


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

我们这样做的一种方法是根据分支机构的名称。我们在git中有发布分支,比如
v1.0\u release
,我们也有integ分支:
v1.0\u integ

我们在分支名称上设置了一个带有
when
子句的多分支管道。当分支名称为
*\u release
时,我们将该构建交付到发布工件repo。其他分支转到快照回购

任何时候,任何其他分支被推送到git(比如功能分支),它们也会被构建,并且根据应用程序的不同,我们通常只将这些构建归档到Jenkins中。这为开发人员提供了关于他们所使用的任何分支的快速反馈,并方便地访问工件


开发人员可以在他们想要的任何分支中使用任何代码,当他们喜欢这些代码并准备好构建一个候选版本时,他们会推到发布分支,Jenkins会处理它

我决定的是:我不区分有无集成测试的构建。它们会运行很长时间,特别是在windows和linux上运行,但不确定我是否有理由用另一种方式运行,你怎么看


至于快照和发布版本之间的区别:maven使用概要文件在发布版本上执行特殊操作。但是,当在distributionManagement中决定是部署到快照还是发布存储库时,maven将使用版本号检查部署到何处。因为您无法基于当前项目版本激活配置文件,所以我决定合并此配置文件,因为如果您有快照版本,则肯定不会发布,如果您的pom有发布版本,则不会生成快照。因此,发布是通过手动将pom设置为发布版本并提交来触发的,此时ci将读取pom,检查版本是否以“-SNAPSHOT”结尾,如果不是,将激活发布配置文件并执行其他仅发布的操作,例如部署maven站点。

在“某些条件”下,您希望使用哪种条件?你能更详细地解释一下你所说的“我不希望每次提交时都在windows上进行长时间的测试和需要大量资源的引导”是什么意思吗?我的意思是,集成测试是资源密集型的,而引导windows vm执行另一组测试来检查项目是否仍然构建在windows上更需要资源密集型的,我相信。至于条件,例如,我希望仅在夜间生成或手动触发生成的情况下,使用windows测试和集成测试触发完整生成。您需要在windows计算机上运行测试吗?为什么不让Windows机器作为Jenkins节点可用呢?Windows虚拟机就是Jenkins节点。当我的项目将包含windows部件时,我需要一个可以在其上运行测试的作业,但由于资源的原因,我不希望每次提交时都发生这种情况。我在部署master的同一台物理服务器上有这个vm,我可以接受它在每次提交时运行,但如果不是必要的话,我不想这样做“每次提交都是一个可能的版本”不是已经有了持续交付吗?我之前说过我不做cd,只是说,也许是个好主意。但是,部署到快照/发布存储库是否与版本以-snapshot结尾或不是maven端更相关?所以这可能是需要检查的另一个条件,即使我希望发布时有分支,我认为这个想法会很好地工作。我比我的开发人员更擅长操作。但我认为Artifactory处理快照repo的方式不同于发布repo。定期从快照回购中删除内容,但保留在发布回购中。但无论哪种方式,无论是更改文件的版本,还是发布到其他地方,都可以使用相同的技术。这只是我根据我们的人工配置和开发人员的工作方式为一些开发人员设置的一种技术。我的意思是,maven根据版本选择部署到快照或非快照存储库。但是是的,我看到了这种技术的用途。所以剩下的问题是没有在每次提交时运行一些测试。虽然我