J'essaie de convertir mon flux de travail de base de projet à l'ancienne en un pipeline basé sur Jenkins. En parcourant la documentation, j'ai trouvé qu'il y avait deux syntaxes différentes nommées scripted
et declarative
. Comme la declarative
version récente de la syntaxe Web Jenkins (fin 2016). Bien qu'il existe une nouvelle version de syntaxe, Jenkins prend également en charge la syntaxe scriptée.
Maintenant, je ne suis pas sûr dans quelle situation chacun de ces deux types serait le meilleur match. scripted
la syntaxe sera bientôt obsolète? Alors, sera declarative
l'avenir du pipeline Jenkins?
Quiconque peut partager quelques réflexions sur ces deux types de syntaxe.
jenkins
continuous-integration
jenkins-pipeline
Nayana Adassuriya
la source
la source
Réponses:
Copié de https://jenkins.io/doc/book/pipeline/syntax/#compare
la source
Une autre chose à considérer est que les pipelines déclaratifs ont une étape script () . Cela peut exécuter n'importe quel pipeline scripté. Ma recommandation serait donc d'utiliser des pipelines déclaratifs et, si nécessaire,
script()
des pipelines scriptés. Par conséquent, vous obtenez le meilleur des deux mondes.la source
script
bloc dans un pipeline déclaratif, vous devriez envisager d'utiliser un pipeline scripté jusqu'au bout.J'ai récemment basculé en déclaratif à partir d'un script avec l'agent kubernetes. Jusqu'en juillet 18, les pipelines déclaratifs n'avaient pas la pleine capacité de spécifier des pods kubernetes. Cependant, avec l'ajout de l'
yamlFile
étape, vous pouvez maintenant lire votre modèle de pod à partir d'un fichier yaml dans votre dépôt.Cela vous permet ensuite d'utiliser par exemple l'excellent plugin kubernetes de vscode pour valider votre modèle de pod, puis de le lire dans votre fichier Jenkins et d'utiliser les conteneurs par étapes à votre guise.
Comme mentionné ci-dessus, vous pouvez ajouter des blocs de script. Exemple de modèle de pod avec jnlp et docker personnalisés.
la source
déclarative semble être l'option la plus pérenne et celle que les gens recommandent. c'est le seul que Visual Pipeline Editor puisse prendre en charge. il prend en charge la validation. et il finit par avoir la plupart de la puissance du script puisque vous pouvez revenir au script dans la plupart des contextes. Parfois, quelqu'un propose un cas d'utilisation où il ne peut pas tout à fait faire ce qu'il veut faire avec déclaratif, mais il s'agit généralement de personnes qui utilisent des scripts depuis un certain temps, et ces lacunes de fonctionnalités sont susceptibles de se combler avec le temps.
plus de contexte: https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/
la source
La documentation Jenkins explique et compare correctement les deux types.
Pour citer: "Scripted Pipeline offre une énorme flexibilité et extensibilité aux utilisateurs de Jenkins. La courbe d'apprentissage Groovy n'est généralement pas souhaitable pour tous les membres d'une équipe donnée, donc Declarative Pipeline a été créé pour offrir une syntaxe plus simple et plus avisée pour création de Jenkins Pipeline.
Les deux sont fondamentalement le même sous-système Pipeline en dessous. "
En savoir plus ici: https://jenkins.io/doc/book/pipeline/syntax/#compare
la source
Vous pouvez également le référer. Une très bonne lecture -> https://e.printstacktrace.blog/jenkins-scripted-pipeline-vs-declarative-pipeline-the-4-practical-differences/ @ Szymon.Stepniak https://stackoverflow.com/users/ 2194470 / szymon-stepniak? Tab = profil
la source
Le pipeline déclaratif est bien supérieur au pipeline scripté . Le pipeline déclaratif est capable d'exécuter tout ce que le pipeline scripté peut en utilisant l'action de script et dispose de nombreuses fonctionnalités supplémentaires.
De plus, le pipeline déclaratif prend en charge diverses technologies telles que Docker ou Kubernetes (voir ici ).
Le pipeline déclaratif est également plus évolutif. Il est toujours en développement et de nouvelles fonctionnalités telles que la nouvelle fonctionnalité Matrix ont été ajoutées récemment à la fin de 2019.
tl; dr - Le pipeline déclaratif peut faire tout ce que le pipeline scripté peut et même plus.
la source