J'ai un script de pipeline qui devrait fonctionner avec et sans paramètres. Je dois donc vérifier si le paramètre est disponible.
J'ai essayé if(getBinding().hasVariable("myparameter"))
mais cela mène à une exception
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.lang.Binding getVariables
Existe-t-il un autre moyen de vérifier si le travail est paramétré?
Les versions plus récentes rendent les paramètres disponibles via la variable params
. Si le paramètre n'est pas défini, il retourne à la configuration par défaut (voir aussi ici ).
Dans la dernière version de jenkins, println(getBinding().hasVariable("myparameter"))
est autorisé et ne génère plus d'erreur.
Voici comment j'ai fait ça:
def myParam = false
if (params.myParam != null){
myParam = params.myParam
}
Pourquoi faire cela alors que vous pouvez simplement définir des paramètres dans votre pipeline comme suggéré ci-dessus?
Dans certains cas, vous souhaitez que votre fichier de pipeline fonctionne, que le paramètre soit défini ou non. Autrement dit, si vous réutilisez votre script de pipeline à partir de différents travaux Jenkins et que vous ne voulez pas obliger personnes à définir ce paramètre ...
Voir Mise en route avec Pipeline, Paramètres de construction :
Paramètres de construction
Si vous avez configuré votre pipeline pour accepter les paramètres à l'aide de l'option Construire avec les paramètres , ces paramètres sont accessibles en tant que variables Groovy du même nom.
UPDATE
☑ Cette construction est paramétrée → Add parameter → Paramètre de chaîne :
STRING_PARAMETER
STRING_PARAMETER_VALUE
Pipeline → Définition : Pipeline script
→ Script :
def stringParameterExists = true
def otherParameterExists = true
try {
println " STRING_PARAMETER=$STRING_PARAMETER"
}
catch (MissingPropertyException e) {
stringParameterExists = false
}
try {
println " NOT_EXISTING_PARAMETER=$NOT_EXISTING_PARAMETER"
}
catch (MissingPropertyException e) {
otherParameterExists = false
}
println " stringParameterExists=$stringParameterExists"
println " otherParameterExists=$otherParameterExists"
Sortie de la console:
[Pipeline] echo
STRING_PARAMETER=STRING_PARAMETER_VALUE
[Pipeline] echo
stringParameterExists=true
[Pipeline] echo
otherParameterExists=false
[Pipeline] End of Pipeline
Finished: SUCCESS