2017-10-11 5 views
0

Un projet de pipeline Jenkins est configuré pour aller chercher son Jenkinsfile à partir d'une prise en pension Git:Comment s'assurer que la liste des paramètres est mise à jour avant d'exécuter un pipeline Jenkins?

Pipeline Def

Si je change la liste des paramètres, par exemple, de:

properties([ 
     parameters([ 
       string(name: 'FOO', description: 'Choose foo') 
     ]) 
]) 

à:

properties([ 
     parameters([ 
       string(name: 'FOO', description: 'Choose foo'), 
       string(name: 'BAR', description: 'Choose bar') 
     ]) 
]) 

Et exécutez la génération, la première exécution ne montre pas lenouvellement ajoutéparamètre:

Parameter list not updated

que le fichier mis à jour Jenkins attend le paramètre BAR soit présent, ce qui provoque la première construction après le changement à l'échec que l'utilisateur ne se présente pas avec une entrée pour entrer cette valeur.

Y at-il un moyen d'empêcher cela? Pour vous assurer que le Jenkinsfile est à jour avant d'afficher la page de saisie des paramètres?

Répondre

1

J'ai une fonction qui ignore la construction, à moins que le travail a tous les paramètres requis, quelque chose comme:

if (job.hasParameters(['FOO', 'BAR'])) { 
    // pipeline code 
} 
1

Réponse courte: Non, ce serait bien s'il y avait une certaine facilité pour l'analyse et le traitement de la Jenkinsfile séparé de la construction, mais il n'y a pas. Jenkins ne connaît pas les nouveaux paramètres tant qu'il n'a pas récupéré, analysé et exécuté le fichier Jenkins, et que la seule façon de le faire est de ... exécuter une build. En effet, l'historique de construction sera toujours "une course derrière" le fichier Jenkins; Lorsque vous modifiez quelque chose dans le fichier Jenkins, la prochaine version sera exécutée avec le "vieux" fichier Jenkins, mais récupérera et traitera le nouveau fichier Jenkins pour la compilation après cela.