Jenkins Artifactory 插件 - 抓取最新的工件

Mat*_*att 5 artifactory jenkins

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

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

根据this SO questionthis GitHub page,似乎只有jfrog CLI才支持按日期排序并获取最新信息,而Jenkins不支持。其他人告诉我,可以使用名称设置器、版本号、描述设置器插件来实现这种功能……但这似乎真的很糟糕。

我们使用 Jenkins 2.60.3 和 Artifactory Enterprise 5.4.5。

Mat*_*att 5

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

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

举例说明:
- 这会将 file3 下载到 Dependencies/file3
- 删除“/LATEST”也将仅下载 file3
- 删除整个“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"
        }
    ]
 }
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅buildJFrog File Specs 文档中的关键字 https://www.jfrog.com/confluence/display/RTF/Using+File+Specs

构建 [可选]

如果指定,则仅下载指定构建的工件。指定 'build' 时,仍会考虑 'pattern' 属性。属性格式为 build-name/build-number。如果未指定内部版本号,或关键字 LATEST 用于内部版本号,则使用最新发布的内部版本号。