我正试图将旧式的项目基础工作流程转换为基于 Jenkins 的管道。在查阅 docs 时,我发现有两种不同的语法,分别名为 "scripted "和 "declarative"。如最近(2016 年底)发布的 Jenkins 网络 declarative
语法。虽然发布了新语法,但 Jenkins 仍然支持脚本语法。
现在,我不确定这两种类型在哪种情况下最匹配。脚本化 "语法很快就会过时?那么 "声明 "会是 Jenkins 管道的未来吗?
谁能分享一下对这两种语法类型的看法?
当 Jenkins Pipeline 首次创建时,Groovy 被选为基础。长期以来,Jenkins 一直使用嵌入式 Groovy 引擎为管理员和用户提供高级脚本功能。此外,Jenkins Pipeline 的实施者发现 Groovy 是一个坚实的基础,可以在此基础上构建现在所说的脚本化 Pipeline"DSL。
由于脚本化管道是一个功能齐全的编程环境,它为 Jenkins 用户提供了极大的灵活性和可扩展性。对于特定团队的所有成员来说,Groovy 的学习曲线通常并不理想,因此,Declarative Pipeline 应运而生,为编写 Jenkins Pipeline 提供了更简单、更有主见的语法。
从根本上说,两者都是相同的管道子系统。它们都是 Pipeline 作为代码的持久实现,都能使用 Pipeline 内置或插件提供的步骤。两者都能利用共享库
它们的不同之处在于语法和灵活性。声明式使用更严格的预定义结构来限制用户可用的内容,使其成为更简单的持续交付管道的理想选择。脚本式的限制很少,因为对结构和语法的唯一限制往往是由 Groovy 本身定义的,而不是任何特定于管道的系统,这使它成为强大用户和有更复杂需求的用户的理想选择。顾名思义,声明式管道鼓励使用声明式编程模型。而脚本式管道采用的是命令式编程模式。
Jenkins 文档对这两种类型进行了适当的解释和比较。
引述如下 脚本式管道为 Jenkins 用户提供了极大的灵活性和可扩展性。对于特定团队的所有成员来说,Groovy 的学习曲线通常并不理想,因此,Declarative Pipeline 应运而生,为编写 Jenkins Pipeline 提供了一种更简单、更有主见的语法。
从根本上讲,两者都是相同的管道子系统;
点击此处阅读更多内容:https://jenkins.io/doc/book/pipeline/syntax/#compare