web-dev-qa-db-fra.com

Affichage dynamique ou conditionnel des paramètres du travail Jenkins (plutôt que de leur population de valeurs)

Disons que j'ai deux (ou plus) types de projets: app (Application) et svc (Service) et j'ai créé un travail Jenkins (travail commun) qui a un tas des paramètres. Ce travail commun peut appeler un autre travail de type projet en aval/individuel (déclencher d'autres constructions de projet, etc. et transmettre les paramètres respectifs), mais il est hors de portée de cette question.

Par exemple:
PROJ_TYPE (un type de paramètre de choix avec des valeurs: app , svc )
Param2 (d'un certain type)
Param3 (de type en cascade, c'est-à-dire que cela dépend de la valeur du paramètre parent PROJ_TYPE).
Param4 (Disons que je veux afficher ce paramètre uniquement lorsque PROJ_TYPE est sélectionné comme "app")
Param5 (d'un certain type)
Param6 (Disons que je veux afficher ce paramètre uniquement lorsque PROJ_TYPE est sélectionné comme "svc". Ce paramètre peut être de n'importe quel type c.-à-d. choix, dynamique, choix étendu, etc.)

Si j'ai les paramètres ci-dessus dans un travail Jenkins, alors le travail Jenkins affichera/demandera tous les paramètres lorsqu'un utilisateur essaiera de construire (c'est-à-dire Build with Parameters).

Est-il possible dans Jenkins d'afficher le paramètre (Param4) uniquement si le paramètre PROJ_TYPE a été sélectionné comme app sinon, je ne veux pas du tout afficher ce paramètre -ou en quelque sorte s'il est possible de le griser? c'est-à-dire. dans ce cas, le travail n'affichera que PROJ_TYPE, Param2, Param3, Param4 et Param5 (et n'affichera pas Param6 ou il est désactivé/grisé).

De même, je veux afficher le paramètre (Param6) uniquement si le paramètre PROJ_TYPE a été sélectionné comme svc sinon, je ne veux pas du tout afficher ce paramètre -ou d'une manière ou d'une autre s'il est possible de le griser? c'est-à-dire. dans ce cas, le travail n'affichera que PROJ_TYPE, Param2, Param3, Param5 et Param6 (et n'affichera pas Param4 ou il est désactivé/grisé).

14
Arun Sangal

Je sais que c'est un ancien, mais je cherchais quelque chose de similaire jusqu'à ce que je trouve Active Choices Plugin . Il ne masque pas les paramètres, mais il est possible d'écrire un script Groovy (soit directement dans le paramètre Active Choices ou dans Scriptler) pour retourner des valeurs différentes. Par exemple:

Sensationnel
if (MY_PARAM.equals ("Foo")) {return ['NOT APPLICABLE']}

else if (MY_PARAM.equals ("Bar")) {return ['Ceci est le seul choix']}}

sinon si (MY_PARAM.equals ("Baz")) {return ['Bazoo', 'Bazar', 'Bazinga']}

/Sensationnel

Dans cet exemple, MY_PARAM est un paramètre du travail Jenkins. Tant que vous mettez "MY_PARAM" dans le champ "Paramètres référencés" des choix actifs, le script réévaluera le paramètre chaque fois qu'il est modifié et affichera la valeur de retour (ou la liste de valeurs) qui correspond.

De cette façon, vous pouvez renvoyer une liste de choix différente (y compris une liste d'un ou même de zéro choix) en fonction des sélections précédentes, mais je n'ai pas trouvé de moyen d'empêcher le paramètre d'apparaître sur la page des paramètres. Il est possible que plusieurs paramètres Active Choice fassent référence au même paramètre, de sorte qu'à l'instant où quelqu'un sélectionne "App" ou "Svc", tous les paramètres non pertinents basculent sur "Non applicable" ou tout ce qui vous convient. J'ai également joué avec des couleurs de texte HTML, mais je n'ai pas d'échantillons de code à partager.

Poignard

7
Dirk Koenig

Selon la description, vous pouvez le faire avec plugin Dynamic-Jenkins-Parameter :

Un plugin de paramètre Jenkins qui permet deux éléments de sélection. La deuxième sélection remplit les valeurs en fonction de la sélection effectuée pour la première sélection.

L'exemple fourni sur le wiki fait exactement ce dont vous avez besoin (au moins pour un cas conditionnel). Je ne l'ai pas essayé par moi-même.

3

@derik Ça a marché! pour moi, la deuxième liste se remplit en fonction du choix du premier élément.

J'ai utilisé le plug-in de paramètre réactif Active Choice, l'exigence était que le premier paramètre répertorie mes serveurs, en fonction de la première sélection, le deuxième paramètre est de se connecter au serveur sélectionné et de répertorier la sauvegarde. de sorte que la liste des sauvegardes disponibles sera affichée ici à restaurer.

  1. activé paramétré.
  2. Sélectionnez Choix Nom du paramètre: Choix du serveur: Choisissez .. qa staging master Description: Sélectionnez le serveur dans la liste
  3. Ajouter un nouveau paramètre "Active Choice Reactive Parameter" Nom: Script de sauvegarde: Groovy Script def getbackupsqa = ("sshpass -f /opt/installer/pass.txt/usr/bin/ssh -p 22 -o StrictHostKeyChecking = no [email protected]. 33.44 ls/opt/jenkins/backup "). Execute ()

if (Server.equals ("Choose ..")) {return ['Choose ..']} else if (Server.equals ("qa")) {return getbackupsqa.text.readLines ()} else if (Server. equals ("staging")) {return ['Staging server not yet configured']} else if (Server.equals ("master")) {return ['Master server not yet configured']}

Description: Sélectionnez la sauvegarde dans la liste Paramètres référencés: Serveur

Le résultat comme ici

1
Anand Babu