ich eine Pipeline gemeinsam genutzte Bibliothek erstellt haben, einen Arbeitsbereich Hash zu erstellen, so dass wir Weglängen Probleme auf unseren Fenstern vermeiden baut:Zugriff auf Variablen innerhalb jenkins Pipeline Verschlusskörper
import java.security.MessageDigest
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
ws(getWsHash(config.length ?: 10)) {
body()
}
}
def getWsHash(length) {
def md5Hash = MessageDigest.getInstance("MD5").digest("${env.JOB_NAME}_${env.EXECUTOR_NUMBER}".bytes).encodeHex().toString()
return md5Hash.substring(0,10)
}
, die ich so verwenden möchten:
Dies schlägt jedoch fehl, weil die scm
Variable null ist. Ich habe es geschafft, es zu beheben, indem ich zu diesem ändere:
Jedoch ist das sowohl klobig und funktioniert nicht für alle Instanzen. Zum Beispiel verwenden wir auch artifactory und bei dem Versuch, diese zu nutzen:
def server = Artifactory.server('advancedcsg')
Ich erhalte die folgende Ausnahme:
java.lang.NullPointerException: Die Methode kann nicht Server() auf null Objekt aufrufen
Wenn ich versuche, den "Trick" by doing:
def Artifactory = Artifactory
ich th Ausnahme ist:
java.lang.UnsupportedOperationException: Verweigern org.codehaus.groovy.runtime.GStringImpl aus Sicherheitsgründen
Kann jemand Marschall helfen zu erklären, was hier vor sich geht und was ich getan habe falsch?