指定分辨率详细信息时,我们在使用 Jenkins Artifactory插件时遇到了困难已解决的工件(需要Artifactory Pro)(我将此值称为 Artifactory-query-string )。
在这种情况下,我们对Artifactory的使用是拉取现有模块(Artifactory中的单个ZIP文件),我们希望使用特定内部版本号或抽象请求检索该特定模块' 最新'建立。
当我们想要的模块/工件只存在于一个存储库中时,我们可以得到我们想要的结果。但是,在一个模块的特定BUILD#被提升之后#39; (通过Artifactory中的简单复制操作)然后我们无法找到“推广的”#39;它被复制到的存储库中的工件。
最近我们引入了Jenkins Build#作为工件的属性和工件文件名的一部分。
我们能够找到的唯一信息来源,其中包含详细信息' Artifactory-query-string'是通过输入区旁边的问号图标提供的帮助信息。
我们对此帮助文本的解释表明:
以这种方式使用此功能时(仅在一个存储库中 - 称为 DEV ),一切都按预期工作。我们能够成功填写“最新”的请求。或者使用 build_number 参数的特定内部版本号,只要我们还指定 build_name 。
Artifactory tree
Artifactory的查询字符串
$DEV:somePath/myApplication*.zip@myJenkinsBuildJob#$LATEST=>.\someFolder
此 Artifactory-query-string 将正确返回单个工件:myApplication-build-102.zip
然而,在其中一个版本被推广之后#39;通过Artifactory中的简单COPY操作到另一个存储库,例如 QA ,我们无法弄清楚如何利用这个相同的功能来对抗刚刚复制工件的 QA 存储库(& #39;促进&#39)。换句话说,我们无法找到'复制/'升级'存储库中复制到它的工件。
Artifactory tree
Artifactory的查询字符串
使用相同的&Artifactory-query-string'和以前一样但是指定 QA 存储库而不是 DEV
$QA:somePath/myApplication*.zip@myJenkinsBuildJob#$LATEST=>.\someFolder
然后Jenkins的Artifactory插件永远不会返回/找到任何东西:
Jenkins Artifactory Plugin version: 2.6.0
Beginning to resolve Build Info dependencies.
Finished resolving Build Info dependencies.
Beginning to resolve Build Info build dependencies.
Dependency on build [myJenkinsBuildJob], number [LATEST], pattern [QA:somePath/myApplication*.zip] - [0] results found.
有趣的是,如果我们删除 DEV 存储库中的原始工件,则针对 QA 的查询可以正常工作。
观察到的行为似乎表明给定的工件(基于文件名,构建#和构建名称)只能在一个存储库中定位/查询(解析),如果您将工件复制到另一个存储库,它将是'隐藏'或忽略此类查询。
这不是我们预期的行为。我们希望每个存储库与其他存储库是分开的,并且针对一个存储库的查询不应该考虑任何其他存储库的任何内容 - 并且我们应该能够在存储库中找到/查找/解析复制的模块到。
有谁能建议我在这里缺少什么?我的期望是错的吗?
答案 0 :(得分:5)
这是一个带有构建信息的known issue,因为它仅通过校验和引用工件。如果移动工件而不是复制工件,它将从正确的路径解析。
答案 1 :(得分:3)
自Jenkins Artifactory插件版本2.9.0起,file specs支持retrieving artifacts by build
在这个新的实现中,您的方案可行。
您的下载规范应如下所示:
{
"files": [
{
"pattern": "${QA}/somePath/myApplication*.zip",
"target": "someFolder/",
"build" : "myJenkinsBuildJob/LATEST",
"flat": "false",
"recursive": "true"
}
]
}