我正在尝试将旧式项目基础工作流转换为基于Jenkins的管道 . 在经历docs时,我发现有两种不同的语法,名为 scripted
和 declarative
. 比如最近Jenkins web declarative
语法发布(2016年底) . 虽然有一个新的语法版本,但Jenkins仍然支持脚本语法 .
现在,我不确定这两种类型中哪一种最适合 . scripted
语法很快就会被弃用? declarative
将成为Jenkins管道的未来吗?
任何可以分享关于这两种语法类型的想法的人 .
5 回答
另一件需要考虑的事情是声明性管道有一个script() step . 这可以运行任何脚本化管道 . 所以我的建议是使用声明性管道,如果需要,使用
script()
作为脚本化管道 . 因此,您将获得两全其美 .声明似乎是更具有前瞻性的选择,也是人们推荐的选择 . 它是Visual Pipeline Editor唯一可以支持的 . 它支持验证 . 它最终拥有脚本的大部分功能,因为你可以在大多数情况下回归脚本 . 偶尔会有人提出一个用例,他们不能完全按照声明的方式做他们想做的事情,但这通常是那些已经使用脚本一段时间的人,这些功能差距很可能会及时关闭 .
更多背景:https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/
复制自https://jenkins.io/doc/book/pipeline/syntax/#compare
Jenkins文档正确地解释并比较了这两种类型 .
引用:“Scripted Pipeline为Jenkins用户提供了极大的灵活性和可扩展性 . 对于给定团队的所有成员来说,Groovy学习曲线通常并不理想,因此创建Declarative Pipeline是为了提供更简单,更具见解性的语法 . 创作詹金斯管道 .
这两者基本上都是下面的管道子系统 . “
在这里阅读更多:https://jenkins.io/doc/book/pipeline/syntax/#compare
我最近使用kubernetes代理编写了一个声明的转换 . 直到7月'18 declarative pipelines didn' t才能完全指定kubernetes pods . 但是,通过添加
yamlFile
步骤,您现在可以从repo中的yaml文件中读取pod模板 .这样就可以使用例如vscode的kubernetes插件用于验证您的pod模板,然后将其读入您的Jenkins文件,并根据需要逐步使用容器 .
如上所述,您可以添加脚本块 . 带有自定义jnlp和docker的示例pod模板 .