【问题标题】:Custom build tagging with Jenkins, Artifactory, Maven使用 Jenkins、Artifactory、Maven 自定义构建标记
【发布时间】: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


【解决方案1】:

我可以看到向文件名添加更多元数据的想法来自何处。通常,我们没有其他地方可以添加此类信息,除了名称。但是有了合适的工件存储库管理器(如 Artifactory),您就不再需要它了。您可以将任何元数据附加到存储库管理器中的工件,然后根据这些属性操作(例如提升)工件。

Here's a screencast 展示了如何将此类元数据添加到工件中,以及如何基于它提升工件。

【讨论】:

  • 不幸的是,Artifactory 元数据 API 仅适用于专业版 :(
  • 其中一些在 OSS 中。此外,这是升级的一个很好的理由。还要考虑云版本,它最终可能比专业版便宜,而且您按使用付费。
  • 即使使用元数据 API,我也遇到了 Artifactory 存储相同文件名的多个副本(每个构建一个)的问题。以我的经验,它似乎用最新版本替换旧工件(如果被告知删除旧版本)或抛出错误(如果被告知保留旧版本)。我做错了吗?
  • 您是否使用非唯一快照?在这种情况下,是的,您的快照将被覆盖。这是 maven 行为,而不是 Artifactory。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 2020-03-11
相关资源
最近更新 更多