【发布时间】:2016-02-12 11:03:37
【问题描述】:
我正在制定一种策略,在我的持续集成和交付管道中标记构建。当生成新版本时,它会经历多个测试阶段;在每个阶段之后,我想标记构建。我的想法是扩展标准的 Maven 系统,所以一个例子是:
my-artifact-1.0-SNAPSHOT.jar
my-artifact-1.0-PASSED_TESTS_1.jar
my-artifact-1.0-PASSED_TESTS_2.jar
...
my-artifact-1.0-RELEASE.jar
随着构建通过每个阶段,它的标签(它的名称/版本的一部分)会被更新。最终,在所有测试阶段之后,构建被 RELEASE 标记为可发布。
我正在使用 Jenkins 服务器并将工件存储在 Maven 存储库中的 Artifactory(非 Pro)上。我的计划是为上述每种标签类型使用单独的 Maven 存储库,并在其标签更新时将工件从一个移动到另一个。
我的促销伪代码如下:
(1) Download artifacts that passed in Jenkins
(2) Text-replace the tag (maybe pom.xml as well?)
(3) Upload to new repository
(4) Update the associated Git commit with tag also
我不确定如何真正干净地实现这一点 - 这是一种常见的做事方式吗?我错过了什么重要的东西吗? Jenkins + Artifactory (non-Pro) + Maven (repos only, Gradle for builds) 系统能做到这一点吗?
谢谢!
【问题讨论】:
-
我建议将某种信息刻录到您的工件中(如版本控制信息;内部版本号等)并基于该构建创建一个工件..然后该工件将被提升.. .如果你喜欢做你所描述的,这将改变原始工件......我建议在你的版本控制中标记你的构建/工件......并通过在 SVN/Git 等中使用标签来推广它,我不会将存储库用于阶段...或者您应该使用支持此类暂存的非 OSS 版本的 Artifactory/Nexus...
标签: maven jenkins tags continuous-integration artifactory