1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-16 11:09:33 +02:00
sap-jenkins-library/jenkins_workspace/Jenkinsfile
2019-05-21 16:15:11 +02:00

72 lines
1.9 KiB
Groovy

import groovy.json.JsonOutput
import groovy.json.JsonSlurper
import jenkins.model.Jenkins
unresolvableCalls = [
podTemplate:'kubernetes',
container: 'kubernetes',
docker: 'docker-plugin',
usernamePassword: 'credentials-binding',
string: 'credentials-binding',
file: 'credentials-binding',
]
node() {
stage('Resolve Plugins') {
try {
resolvePlugins()
} catch(Exception e) {
def result = System.getenv()['result']
new File(new File(result).getParentFile(), 'FAILURE').text = "${e.getMessage()}"
throw e
}
}
}
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 = unresolvableCalls[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
}