如何在Artifactory中获取神器的属性

时间:2015-08-28 18:22:16

标签: api rest properties artifactory artifact

在Artifactory中,我有一个工件“consumersvc”,有多个版本:1.0.0,1.1.0,1.2.0等

现在,对于每个工件版本,都有一些属性附加到该工件-x.x.x的构建工件 例如:svnURL,svnChangeSetNumber等

有什么方法可以使用Rest API等获取此信息。

我尝试了以下内容,但它列出了所有具有此属性=值的工件,但我看起来与此相反。

http://myartifactorysrvr.my.company.com:8080/artifactory/api/search/prop?svnURL=*

然后,它在JSON输出中输出信息,并显示Artifactory中此属性设置为任何值的所有工件。我正在寻找的是,如何获得Artifactory中任何工件的所有属性(svnURL和svnChangeSetNumber)?

2 个答案:

答案 0 :(得分:4)

您可以使用Artifactory query language(AQL)进行此类查询。

例如,以下简单查询将返回存储库libs-releases-local中所有工件的属性,这些工件使用属性svnURL进行注释:

items.find({"$and" : [{"repo" : "libs-releases-local"}, {"@svnURL" : "*"}]}).include("property.*")

您可以使用Artifactory rest API运行此类查询,例如使用curl:

curl -vv -uuser:pass -X POST -H "Content-Type: application/json" -d @aql.txt http://localhost:8081/artifactory/api/search/aql

其中aql.txt是包含查询的文件。

这是一个相当简单的查询示例。上面的链接显示了Artifactory查询语言的更多功能。

答案 1 :(得分:1)

例如:工件名称是accesscontrol

并且您希望在Artifactory中找到所有构建或accesscontrol-x.x.x工件的属性。你可以使用:

import groovy.json.*

def searchUrl = "http://myartifactorysrvr.my.company.com:8080/artifactory/api/search/artifact?name=accesscontrol&repos=libs-release-local"
def conn = searchUrl.toURL().openConnection()
conn.setRequestProperty("X-Result-Detail", "info, properties")
def searchResultTxt = conn.content.text
println "Found: ${searchResultTxt}"
def searchResults = new JsonSlurper().parseText(searchResultTxt)
def map = searchResults.results.findAll {  it.properties."vcs.revision" != null }.collect { it.properties['vcs.revision'][0] }.sort().reverse()
map

然后在$ prompt下运行:

`which groovy` ./1.groovy |sed "s/\(\"properties\":\)/\n\1/g"|grep vcs.revision| sed "s/$/\n\n/"

您将获得生成accesscontrol工件的项目的所有版本的输出,如果任何这些版本上传SVN changeset#作为vcs.revision,您将看到每行。这样,您就知道什么是SVN URL以及用于获取源代码的Changeset。

如果将libs-release-local替换为其他存储库,则可以获得更多结果或使用虚拟存储库名称(如果您在Artifactory中创建了任何存储库名称),该名称将查看包括远程存储库在内的所有存储库。