在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)?
答案 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中创建了任何存储库名称),该名称将查看包括远程存储库在内的所有存储库。