web-dev-qa-db-fra.com

Comment vérifier si le paramètre de construction est disponible dans Jenkinsfile

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é?

8
domruf

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 ).

3
StephenKing

Dans la dernière version de jenkins, println(getBinding().hasVariable("myparameter")) est autorisé et ne génère plus d'erreur.

8
Steven

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 ...

4
user1428570

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 :

    • Nom : STRING_PARAMETER
    • Valeur par défaut : 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
3
Gerold Broser