J'utilise un pipeline déclaratif dans un jenkinsfile, mais je voudrais dériver certaines variables d'un paramètre.
Par exemple, donné: Je voudrais ajouter un bloc comme: p> tel que je peux utiliser des variables ailleurs dans le pipeline. Par exemple: p> etc .. p> mais le script est illégal dans les sections Paramètre, Environnement et Agent.
Il ne peut être utilisé que dans les étapes seulement. P> J'ai besoin d'utiliser le paramètre dans le bloc d'agent et je souhaite vous éviter de me répéter où les variables sont utilisées dans différentes étapes. P> est là Un moyen sain d'y parvenir? Mes préférences dans l'ordre sont les suivantes: p> Une bibliothèque partagée peut être appropriée ici, qu'il soit réellement partagé. P> L'intention est de prendre en charge un projet multi-configuration en créant une construction paramétrée et en l'appelant pour différents paramètres. Ensemble avec une lumière d'état rouge / bleu pour chaque configuration.
Ce pourrait être que j'ai supposé un design "à l'ancienne". Auquel cas une réponse acceptable expliquerait la meilleure pratique moderne pour créer un pipeline multi-branche multi-configurations. Quelque chose comme: https : //support.cloudbees.com/hc/en-us/articles/115000088431-Create-A-Matrix-Like-Flow-vith-Pipeline ou Projet multiconfiguration de pipeline Jenkins p> Voir aussi Pipeline de construction multiconfiguration / matricielle à Jenkins pour une discussion moins spécifique des meilleures pratiques. P> P>
4 Réponses :
jamais vraiment utilisé le pipeline déclaratif Jenkins avant, mais je pense que la façon dont vous vous référez à des paramètres est incorrecte est incorrecte?
Je pense que cela pourrait être: alors quelque chose comme le ci-dessous peut-être peut-être? P> $ {param ..platform} code> ou
.Platform code> au lieu de
param code>. P>
pipeline {
agent any
stages {
stage('example') {
steps {
script {
switch(${params.Platform}) {
...
}
}
}
}
}
}
Le problème n'est pas la syntaxe de l'interrupteur (qui est réduite pour moi être nouveau à Groovy) mais où je peux le mettre. J'ai besoin du paramètre du bloc d'agent. Un bloc de script est-il légal là-bas?
Je vois. Je n'ai pas réalisé que c'était votre problème. Y a-t-il besoin de vos paramètres d'avoir les chiffres en eux? Par exemple, quelque chose comme cela peut fonctionner: nom de fichier "src / main / docker / jenkins- $ plate-forme.dockerfile" code> Si vous modifiez le paramètre uniquement pour permettre uniquement les options de "Debian" et "Centos".
Ceci est un exemple que j'ai dans la production
Mais où dans un pipeline déclaratif, pouvez-vous placer pour que le paramètre puisse être utilisé pour définir l'agent?
@Bruce Adams, j'ai raté la partie d'être un pipeline déclaratif, j'utilise des pipelines scriptés.
Je pense que la clé de résolution de votre problème est la déclaration de vos variables. N'utilisez pas Voici un exemple de solution pour votre problème: p> def code> si vous voulez que votre variable soit accessible à partir d'autres étapes.
Qu'est-ce qui est définitivement possible sur Windows: