ビルド パラメーター foo を追加すると、「素の変数」のように機能するものに変換されるため、スクリプトでは次のようにします。
node {
echo foo
}
ワークフロー スクリプトの実装を見ると、スクリプトが実行されると、WorkflowScript というクラスが動的に生成されることがわかります。スクリプト内のすべてのステートメントは、このクラスのコンテキストで実行されます。このスクリプトに渡されたすべてのビルド パラメータは、このクラスからアクセスできるプロパティに変換されます。
たとえば、次のことができます。
node {
getProperty("foo")
}
興味がある方のために、ビルド パラメーター、環境変数、および WorkflowScript クラスのメソッドを出力しようとする、私が作成したワークフロー スクリプトを次に示します。
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}"
}
}
ビルド パラメーターが設定されているかどうかを確認するためにテストしたかった別のコード例を次に示します。
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"
}
}