一尘不染

Jenkins脚本化管道或声明性管道

jenkins

我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为scripteddeclarative。例如declarative最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。

现在,我不确定这两种类型的哪种情况最合适。scripted语法将很快被弃用吗?declarative詹金斯管道的未来会是这样吗?

任何可以分享有关这两种语法类型的想法的人。


阅读 228

收藏
2020-07-25

共1个答案

一尘不染

最初创建Jenkins
Pipeline时,Groovy被选为基础。Jenkins长期以来一直提供嵌入式Groovy引擎,以为管理员和用户提供高级脚本功能。此外,Jenkins
Pipeline的实现者发现Groovy是构建现在称为“脚本管道” DSL的坚实基础。

由于它是功能齐全的编程环境,因此脚本化管道为Jenkins用户提供了极大的灵活性和可扩展性。Groovy学习曲线通常不是给定团队的所有成员所希望的,因此创建了声明式管道,以为编写Jenkins
Pipeline提供更简单,更自以为是的语法。

两者基本上都在下面是相同的Pipeline子系统。它们都是“管道作为代码”的持久实现。他们俩都可以使用内置于Pipeline或插件提供的步骤。两者都可以利用共享库

但是,它们的区别在于语法和灵活性。声明性限制使用更严格和预定义的结构为用户提供的功能,使其成为更简单的连续交付管道的理想选择。脚本化脚本所提供的限制很少,以至于对结构和语法的唯一限制往往是由Groovy自己定义的,而不是由任何特定于管道的系统定义的,因此,它成为高级用户和要求更复杂的用户的理想选择。顾名思义,声明性流水线鼓励使用声明性编程模型。而脚本化管道遵循更强制性的编程模型。

https://jenkins.io/doc/book/pipeline/syntax/#compare复制

2020-07-25