如何访问groovy脚本中为特定构建创建的工件



我的groovy脚本中有一个阶段,它使用getImageVulnsFromQualys函数生成两个json文件(https://www.jenkins.io/doc/pipeline/steps/qualys-cs/)当脚本完成时,我得到了两个json文件,它们的文件名是随机散列。我不能静态引用每个要解析的文件,因为每次构建完成时json文件的名称都是随机的。我希望能够读取这两个json文件,并在同一阶段或同一脚本的另一阶段解析该文件。我希望Groovy能有一个简单的函数,让我可以检索特定构建的所有工件,并且可以解析每个工件。对我来说,检索所有这些工件的最佳方式是什么?

我有类似的东西来查找工件名称。下面是一个var步骤的例子,用于查找文件及其内容:

//getArtifactToConentMap.groovy 
def call(args) {
def build = args.build
def regex = args.regex
def files = build.getArtifacts()
Map<String, String> artifactNameToContent = [:]
for (int i = 0; i < files.size(); i++) {
def f = files[i]
if (f.name ==~ regex) {
String artifactName = f.relativePath
String artifactVirtualFile = build.getArtifactManager().root().child(artifactName)
String artifactContent = getVirtualFileConent(artifactVirtualFile)
artifactNameToContent.put(artifactName, artifactContent)
}
}
return artifactNameToContent
}
def getVirtualFileConent(def virtualFile){
InputStream is = null
try {
is = a.open()
return is.text
} finally {
is?.close()
}
}

然后你可以使用如下:

Map<String, String> jsonArtifactsNameToContent = getArtifactToConentMap(build: currentBuild.rawBuild, regex: /.*.json/))

最新更新