以Artifactory

时间:2016-03-08 11:03:22

标签: dependencies teamcity artifactory

我有一个Generic存储库,我们存储来自各种构建的工件。 我们的构建有3种可能的状态 - built, staged, release。这些状态是通过REST API Build Promotion调用分配的。

在构建B中,我需要最新发布构建A的工件。 我该怎么做?

工件具有结构:

Generic:UNIX/somefolder/123/<artifacts-of-build-id-123>
Generic:UNIX/somefolder/123/<artifacts-of-build-id-124>

我尝试过:

a)构建在TeamCity上运行,所以我尝试使用TeamCity插件。在那里我尝试了这种依赖模式:Generic:UNIX/somefolder/**/*.raw@UNIX :: BuildName :: Build#LAST_RELEASE => build-dir/ - 这不起作用。使用LATEST代替LAST_RELEASE确实有效,但解决了最新版本,无论其状态如何。

b)使用REST API:我做了这个电话:

curl -v --fail --request POST --header 'Content-Type: application/json' \
--data '{"buildName": "UNIX :: BuildName :: Build", "buildNumber": "LATEST", "buildStatus": "release"}' \
https://artifactory.srv.int.domain.com/artifactory/api/search/buildArtifacts

但是返回400 Bad Request错误。从JSON中删除“buildStatus”有帮助,但是我再次获得最新版本,无论其状态如何。

构建工件具有以下属性: enter image description here

编辑:我没有设置自定义布局,但我为此案例制作了一个以进行测试。没有帮助。

1 个答案:

答案 0 :(得分:2)

同时使用“buildNumber”:“LATEST”和“buildStatus”:“release”参数可能会在约束之间产生冲突。 仅在未指定buildNumber参数时才允许使用“buildStatus”参数。即:

curl -v --fail --request POST --header'Content-Type:application / json'\ --data'{“buildName”:“UNIX :: BuildName :: Build”,“buildStatus”:“release”}'\ https://artifactory.srv.int.domain.com/artifactory/api/search/buildArtifacts

希望这有帮助, 伊塔马尔