【问题标题】:How to get list of directories from Artifactory repo using groovy如何使用 groovy 从 Artifactory repo 获取目录列表
【发布时间】:2021-02-17 09:23:59
【问题描述】:

我的 Jenkins Active 选择参数之一中有以下 groovy 脚本:

import groovy.json.JsonSlurper
import jenkins.model.Jenkins
versions = getArtifactsVersions()
def getArtifactsVersions(){
   def responseJson = "curl -k -X GET https://{Artifatory_URL}/storage/my-repo/".execute().text
   def projectList = (new groovy.json.JsonSlurper().parseText(responseJson)).children
   return projectList
}

它应该返回此路径中存在的文件夹列表(没有子目录),但是,我从中得到的结果是:

{uri=/TEST_FOR_YONI, folder=true}
{uri=/TEST_FOR_PKMLODEL_V2, folder=true}

如何将其更改为返回:

TEST_FOR_YONI
TEST_FOR_PKMLODEL_V2

为了调试,我运行了以下代码:

import groovy.json.JsonSlurper
import jenkins.model.Jenkins
def responseJson = "curl -k -X GET https://{Artifatory_URL}/storage/my-repo/".execute().text
print responseJson

它会重新运行以下内容:

{
  "repo" : "my-repo",
  "path" : "/",
  "created" : "2020-11-29T18:00:42.635+02:00",
  "lastModified" : "2020-11-29T18:00:42.635+02:00",
  "lastUpdated" : "2020-11-29T18:00:42.635+02:00",
  "children" : [ {
    "uri" : "/TEST_FOR_YONI",
    "folder" : true
  }, {
    "uri" : "/TEST_FOR_PKLMODEL_V2",
    "folder" : true
  }
  ],
  "uri" : "https://{Artifatory_URL}/storage/my-repo/"
}

【问题讨论】:

  • 请在 responseJson 变量中显示您在 JsonSlurper 之前拥有的内容
  • 根据代码,projectList 应该是一个 Map,但在示例输出中看起来像一个 JSON 字符串。对吗?
  • 好的。 https://{Artifatory_URL}/storage/my-repo/ 返回什么?
  • @daggett 我现在在问题中添加了该信息,感谢您的建议,我能够看到问题所在。我必须在children 之后添加.uri。现在我只需要从一开始就摆脱反斜杠。有什么想法吗?

标签: groovy jenkins-pipeline artifactory


【解决方案1】:
def responseJson='''
{
  "repo" : "my-repo",
  "path" : "/",
  "created" : "2020-11-29T18:00:42.635+02:00",
  "lastModified" : "2020-11-29T18:00:42.635+02:00",
  "lastUpdated" : "2020-11-29T18:00:42.635+02:00",
  "children" : [ {
    "uri" : "/TEST_FOR_YONI",
    "folder" : true
  }, {
    "uri" : "/TEST_FOR_PKLMODEL_V2",
    "folder" : true
  }
  ],
  "uri" : "https://{Artifatory_URL}/storage/my-repo/"
}
'''


def projectList = new groovy.json.JsonSlurper().parseText(responseJson).children.collect{ it.uri.substring(1) }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多