【问题标题】:How to get properties of an Artifact in Artifactory如何在 Artifactory 中获取 Artifact 的属性
【发布时间】:2015-08-28 18:22:15
【问题描述】:

在 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)?

【问题讨论】:

    标签: api rest properties artifactory artifact


    【解决方案1】:

    您可以使用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 查询语言的更多功能。

    【讨论】:

      【解决方案2】:

      例如:工件名称是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
      

      然后在 $ 提示符下运行:

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

      您将获得生成访问控制工件的项目的所有构建的输出,并且如果这些构建中的任何一个将 SVN 变更集 # 上传为 vcs.revision,您将在每行中看到这一点。这样一来,您就知道什么是 SVN URL,以及使用了什么 Changeset 来获取源代码。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-30
        • 1970-01-01
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多