Jenkins paramètre booléen est toujours vrai en groovy
J'ai un Jenkins travail qui appelle un script groovy et le groovy script utilise Jenkins paramètres pour faire ce travail. Je peux récupérer tous les paramètres sans problème, sauf pour un paramètre booléen. Le paramètre booléen est une case à cocher dans Jenkins
J'ai lu le jenkins paramètre en Groovy comme suit:
boolean libraryBranch = config.get('library_branch_feature');
Maintenant lorsque j'imprime le " libraryBranch variable
out.println "-- Library branch feature?: " + libraryBranch.toString();
- Je obtenir les imprimés suivants ligne:
-- Succursale de la bibliothèque ?: vrai
De sorte qu'il n'a pas d'importance si le booléen Jenkins paramètre est sélectionné ou pas, j'ai toujours une valeur booléenne "true" en Groovy. Tous les autres (string) paramètres à l'intérieur même de l'emploi sont lus sans problème.
Quelqu'un peut m'aider avec ce problème?
MODIFIER
Ok j'ai décidé de l'essayer et de récupérer le code dans une couple d'autres façons de faire et tyring de trouver une bonne solution:
Boolean libraryBranch = build.buildVariableResolver.resolve("library_branch_feature");
String libraryBranchString = build.buildVariableResolver.resolve("library_branch_feature").toString();
Boolean libraryBranchStringAsBoolean = build.buildVariableResolver.resolve("library_branch_feature") as Boolean;
Les variables ci-dessus sont alors imprimées:
out.println "-- Library branch feature?: " + libraryBranch;
out.println "-- Library branch feature to String: " + libraryBranch.toString();
out.println "-- Library branch feature to String: " + libraryBranch.toString();
out.println "-- Library branch feature as String: " + libraryBranchString;
out.println "-- Library branch feature String as Boolean: " + libraryBranchStringAsBoolean;
La sortie de la ci-dessus, les tirages sont affichées ci-dessous:
-- Library branch feature?: true
-- Library branch feature to String: true
-- Library branch feature to String: true
-- Library branch feature as String: false
-- Library branch feature String as Boolean: true
De sorte que le seul jusqu'à présent avoir la valeur booléenne de lire correctement comme un faux est de ne pas le transformer en un booléen à tous, mais il suffit de lire comme une chaîne de caractères et l'utiliser comme une chaîne de caractères.
Je préfère l'utiliser comme un booléen si donc toutes les suggestions sur la question est toujours apprécié.
OriginalL'auteur Wubinator | 2014-10-22
Vous devez vous connecter pour publier un commentaire.
La réponse est à lire l'Jenkins paramètre en Chaîne, puis de la convertir en une valeur booléenne à l'aide de la méthode .toBoolean(); mon libraryBranch est maintenant défini comme suit:
OriginalL'auteur Wubinator
Juste par curiosité, j'ai essayé le suivant:
Définir la variable 'testmode' comme une valeur booléenne dans le pipeline de l'installation.
Démarrer le travail, avec testmode défini sur false (désactivé).
Dans le pipeline script, exécutez le code suivant immédiatement au moment de l'entrée:
vous verrez le résultat 'testmode tests de faux".
Pour vérifier mon affirmation que l' 'boolean' variable testmode est en FAIT une chaîne quand elle arrive, j'ai essayé:
et il a explosé sur la 2e 'toBoolean'. Je vais vous épargner le message d'erreur...
Donc, je demande que testmode vient comme la chaîne "false" au lieu de comme une valeur booléenne (que ce soit en raison de la promotion, la rétrogradation, la force, peu importe).
Donc, si c'est un paramètre booléen, et vous avez vraiment envie de le traiter comme un booléen et ne pas avoir à dire " si (booleanvar=="true")', puis de le convertir en une valeur booléenne que ci-dessus et vous avez terminé.
OriginalL'auteur RustyCar
J'ai rencontré le même problème avec la lecture de Propriétés java - (extrait des valeurs booléennes sont toujours vraies. Donc, dire que j'ai un
settings
fichier avec la propriétédebugging=false
. Ce test échoue:Mais si vous le faites
properties.getOrDefault('debugging',false).toString().toBoolean()
il sera de retour la valeur correcte. C'est probablement, en raison de la contrainte?OriginalL'auteur Alexiy