【问题标题】:Does artifactory support multiple versions of the same artifact?工件是否支持同一工件的多个版本?
【发布时间】:2012-08-08 15:23:30
【问题描述】:

假设我有工件“mylibrary-5.2.jar”和“mylibrary-5.3.jar”代表我们的项目为我们的其他项目之一创建和发布的库的 5.2 和 5.3 版本。

Artifactory 是否支持为每个工件提供多个“版本”来表示在发布期间执行的不同构建以构建此工件?

例如,为了生成“mylibrary”的 5.2 版本的最终版本,也就是工件:mylibrary-5.2.jar,我们经历了 3 次构建以得到一个通过我们集成的版本环境的自动化测试和我们的用户验收测试。

因此,在 5.2 版中,有三个独立的构建生成了三个独立的工件。我们希望能够保留并可能在以后调用这些不同构建的工件(用于测试等)。

为了做到这一点,以下哪个选项会起作用?

  1. 将工件捕获为单独的工件,即 build-5.2-b1.jar(构建 1 的工件),build-5.2-b2.jar(构建 2 的 artifact)、build-5.2-b3.jar(构建 3 的工件)和 build-5.2.jar (最终生产版本;与构建 3 匹配)

  2. 捕获名为“build-5.2.jar”的单个工件,该工件具有 捕获构建 1 到 3 的工件的版本,并且 以后可以按版本号调用。

  3. 其他一些我们没有考虑但应该考虑的选项

【问题讨论】:

    标签: artifactory


    【解决方案1】:

    问题本身与 Artifactory 关系不大,因为它可以处理任何工件;但推荐的方式通常是您第一个建议的变体;也就是说,保留每个构建的单独快照,直到您对结果感到满意并生成单个发布版本

    例如,每次开发/质量保证/集成迭代都会以以下形式生成工件:

    artifactName-1.0-${TIMESTAMP}.jar
    

    每一个都有不同的名称(可能还有内容),因此是可追溯的。

    一旦迭代完成,并且您已准备好发布工件,请以以下形式生成它:

    artifactName-1.0.jar
    

    此工件代表最终发布的版本。


    快照在 Java 世界中非常普遍,被MavenIvy 广泛使用,也是Continuous Integration 最基本的概念之一

    【讨论】:

    • 谢谢;最初我用 TIMESTAMP 标记了我们的工件,但我认为切换到内部版本号可能会在视觉上简化事情。一般约定是总是有一个时间戳还是构建号一样好(除了你可以从时间戳中看到它产生时,而不必查找它)
    • 抱歉,还有一个问题——Artifactory 允许将工件放置在不同的存储库中。我想我们将有一个集成存储库,它将捕获集成构建 artifactName-1.0-%{TIMESTAMP}.jar,保持生产存储库干净,只有最终的生产版本,例如工件名称-1.0.jar。这似乎也是惯例吗?
    • Maven的约定是timestamp + build number,Ivy的约定是timestamp;尽管您不受任何约束,但您应该使用对项目/组织最有意义的东西。
    • 为快照和发布工件维护单独的存储库也是一种非常常见的做法,是的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2016-01-28
    • 2021-09-05
    • 2012-09-24
    • 1970-01-01
    • 2021-05-10
    相关资源
    最近更新 更多