mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-16 11:09:33 +02:00
54 lines
1.4 KiB
Groovy
54 lines
1.4 KiB
Groovy
import groovy.json.JsonOutput
|
|
import groovy.json.JsonSlurper
|
|
|
|
import jenkins.model.Jenkins
|
|
|
|
def resolvePlugins() {
|
|
def stepCallMapping = new JsonSlurper().parseText(new File(System.getenv()['calls']).text)
|
|
|
|
def stepPluginMapping = [:]
|
|
|
|
println "[INFO] Resolving plugins ..."
|
|
|
|
for(def step in stepCallMapping) {
|
|
def resolvedPlugins = [:]
|
|
for(def call in step.value) {
|
|
def resolvedPlugin = resolvePlugin(call)
|
|
if (! resolvedPlugin) resolvedPlugin = 'UNIDENTIFIED'
|
|
if(resolvedPlugins[resolvedPlugin] == null)
|
|
resolvedPlugins[resolvedPlugin] = (Set)[]
|
|
resolvedPlugins[resolvedPlugin] << call
|
|
stepPluginMapping.put(step.key,resolvedPlugins)
|
|
}
|
|
}
|
|
|
|
def result = System.getenv()['result']
|
|
new File(result).write(new JsonOutput().toJson(stepPluginMapping))
|
|
|
|
println "[INFO] plugins resolved. Result: ${result}."
|
|
}
|
|
|
|
def resolvePlugin(call) {
|
|
|
|
def plugins = Jenkins.get().pluginManager.getPlugins()
|
|
|
|
def s = new org.jenkinsci.plugins.workflow.cps.Snippetizer()
|
|
|
|
def pDescs = s.getQuasiDescriptors(false)
|
|
|
|
|
|
for(def pd in pDescs) {
|
|
if(pd.getSymbol() == call)
|
|
return pd.real.plugin?.shortName
|
|
}
|
|
return null
|
|
}
|
|
|
|
try {
|
|
resolvePlugins()
|
|
} catch(Exception e) {
|
|
def result = System.getenv()['result']
|
|
new File(new File(result).getParentFile(), 'FAILURE').text = ''
|
|
throw e
|
|
}
|