当您通过现有工件将工件部署到Artifactory时,它不会将其与现有工件所具有的构建关联。
例如:如果您使用Jenkins Artifactory插件来部署三个工件:
example.jar
example.pom
example.json
然后它将创建一个新构建,将这些构件与该构建相关联,并将构件部署到您指定的位置和存储库。
让我们用buildName" example-build"将其部署到/libs-release-local/example/1.0/。和buildNumber 51
如果您查看了工件,您将在构建选项卡上看到它与build-info.json相关联。
现在,让我们假设您使用REST API将example.json部署到同一位置:
PUT /libs-release-local/example/1.0/example.json
现在新工件与build-info.json没有关联!
如何部署工件以使其与已存在的build-info.json相关联? (在这个例子中," / example-build / 51" build)。
无法执行此操作会导致各种问题(例如,当build_promotion完成时,它仅提升先前关联的工件,而不会提升以后部署的任何工件。)
答案 0 :(得分:8)
Artifactory将Build Info
描述符与基于的校验和的构建工件工件相关联。
如果你看一下Build Info
描述符的JSON,你就能看到:
{
...
"modules" : [ {
"id" : "org._10ne.gradle:rest-gradle-plugin:0.2.0",
"artifacts" : [ {
"type" : "pom",
"sha1" : "f0dcec6a603aa99f31990e20c0f314749f0e22ca",
"md5" : "427dcf49c07cc7be175ea31fd92da44e",
"name" : "rest-gradle-plugin-0.2.0.pom"
},
....
}
}
Build Info
描述符描述了“构建”,它基本上是由某个过程产生的单个模块单元;这个过程取决于特定的环境。
您正在部署新工件,该工件不属于原始流程或Build Info
描述的环境;如果是的话,它将使用与前一个工件完全相同的校验和生成
您基本上会损害“构建”单元的完整性。
执行此操作的“正确”方法是启动新的构建过程并生成有效的Build Info
描述符。