【问题标题】:Jenkins Artifactory plugin - grabbing latest artifactsJenkins Artifactory 插件 - 抓取最新的工件
【发布时间】:2023-04-04 17:54:01
【问题描述】:

我正在尝试保存构建工件并通过 Jenkins Artifactory 插件的上传/下载规范部分将它们拉入新构建。 有没有办法获取“最新”的构建工件?

我在Artifactory file spec docs 中看到,下载规范中应该有一个“构建”元素,我可以在其中指定“最新”,但这不起作用,只是说“未找到最新”。也许我一开始就没有正确地将构建发布到 Artifactory?

根据this SO questionthis GitHub page 看来,仅 jfrog CLI 支持按日期排序并获取最新消息,而 Jenkins 不支持。其他人告诉我,可以使用名称设置器、版本号、描述设置器插件来获得这种功能......但这看起来真的很hacky。

我们正在使用 Jenkins 2.60.3 和 Artifactory Enterprise 5.4.5。

【问题讨论】:

  • 您链接到的下载规范说 build 是可选的,并且“如果未指定内部版本号 [...],则使用最新发布的内部版本号”。您是否尝试过简单地不指定构建?这会给你最新的吗?
  • 经过大量试验和错误后,我发现了一些可行的方法。您的观察是正确的,但还有更多信息。我会将其添加为答案,希望对其他人有所帮助,因为我无法在任何地方找到答案。

标签: jenkins artifactory


【解决方案1】:

如果我使用“aql”,我根本无法让它工作,但在使用“模式”查找文件时它可以工作。当指定“构建”时,它只会抓取该构建的工件,即使您指向的 repo 有一堆类似命名的文件(我猜 Artifactory 中的构建元数据会处理这个问题)。如果不指定“构建”,它将获取所有匹配的工件。

"build" 应该是 build-name/build-number 格式,但你可以省略数字或使用 LATEST 来获取最新的成功构建的工件(我通过创建失败的构建)。

举例说明:
- 这会将 file3 下载到 Dependencies/file3
- 删除“/LATEST”也将只下载文件3
- 删除整个“build”行将下载所有 3 个文件

# Artifactory Repo: example-repo/  
# BuildName: example-build
#   example-repo/file1  (from build 1)   
#   example-repo/file2  (from build 2)   
#   example-repo/file3  (from build 3)

Download File Spec:
{
    "files": [
        {
            "pattern": "example-repo/file*",
            "target": "Dependencies/",
            "recursive": "false",
            "flat" : "true",
            "build" : "example-build/LATEST"
        }
    ]
 }

有关详细信息,请参阅 JFrog 文件规范文档中的 build 关键字 https://www.jfrog.com/confluence/display/RTF/Using+File+Specs

构建 [可选]

如果指定,则仅指定构建的工件 被下载。 'pattern' 属性仍然被考虑在内 当指定“构建”时。属性格式为 版本名称/版本号。如果未指定内部版本号,或者 关键字 LATEST 用于内部版本号,然后是最新发布的 使用内部版本号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多