Wenn Sie einen Build-Parameter foo hinzufügen, wird dieser in etwas konvertiert, das sich wie eine "nackte Variable" verhält. In Ihrem Skript würden Sie also Folgendes tun:
node {
echo foo
}
Wenn Sie sich die Implementierung des Workflow-Skripts ansehen, werden Sie feststellen, dass bei der Ausführung eines Skripts eine Klasse namens WorkflowScript dynamisch generiert wird. Alle Anweisungen im Skript werden im Kontext dieser Klasse ausgeführt. Alle an dieses Skript übergebenen Build-Parameter werden in Eigenschaften konvertiert, auf die von dieser Klasse aus zugegriffen werden kann.
Zum Beispiel können Sie Folgendes tun:
node {
getProperty("foo")
}
Wenn Sie neugierig sind, ist hier ein Workflow-Skript, das ich geschrieben habe und das versucht, die Build-Parameter, Umgebungsvariablen und Methoden für die WorkflowScript-Klasse auszudrucken.
node {
echo "I am a "+getClass().getName()
echo "PARAMETERS"
echo "=========="
echo getBinding().getVariables().getClass().getName()
def myvariables = getBinding().getVariables()
for (v in myvariables) {
echo "${v} " + myvariables.get(v)
}
echo STRING_PARAM1.getClass().getName()
echo "METHODS"
echo "======="
def methods = getMetaClass().getMethods()
for (method in methods) {
echo method.getName()
}
echo "PROPERTIES"
echo "=========="
properties.each{ k, v ->
println "${k} ${v}"
}
echo properties
echo properties["class"].getName()
echo "ENVIRONMENT VARIABLES"
echo "======================"
echo "env is " + env.getClass().getName()
def envvars = env.getEnvironment()
envvars.each{ k, v ->
println "${k} ${v}"
}
}
Hier ist ein weiteres Codebeispiel, das ich ausprobiert habe und bei dem ich testen wollte, ob ein Build-Parameter festgelegt wurde oder nicht.
node {
groovy.lang.Binding myBinding = getBinding()
boolean mybool = myBinding.hasVariable("STRING_PARAM1")
echo mybool.toString()
if (mybool) {
echo STRING_PARAM1
echo getProperty("STRING_PARAM1")
} else {
echo "STRING_PARAM1 is not defined"
}
mybool = myBinding.hasVariable("DID_NOT_DEFINE_THIS")
if (mybool) {
echo DID_NOT_DEFINE_THIS
echo getProperty("DID_NOT_DEFINE_THIS")
} else {
echo "DID_NOT_DEFINE_THIS is not defined"
}
}
$foo
wie in verwenden solltenif ($PARAM == 'true') {…}
. Das ist nur eine Variablenkennung in Groovy.$
ist nur ein Metazeichen innerhalb einiger Arten von Zeichenfolgen.