- 如何选择脚本式语法和声明式语法
- 脚本式流水线
- 声明式流水线
如何选择脚本式语法和声明式语法
对于新用户和那些希望流水线具备传统 Jenkins 一样可读性的用户来说,声明式流水线更容易学习和维护。这是以灵活性为代价换取结构不支持的功能。
脚本式流水线更加灵活,提供了 “超级用户” 的选项,即允许用户不受结构约束实现更多功能。
不过,任何一种流水线类型对大多数场景而言都同样适用。
脚本式流水线
脚本式流水线具有以下优点
- 更少的代码段落和弱规范要求。
- 更强大的程序代码能力。
- 更像编写代码程序。
- 传统的流水线即代码模型,用户熟悉并向后兼容性。
- 更灵活的自定义代码操作。
- 能够构建更复杂的工作流和流水线。
脚本式流水线具有以下缺点
- 普遍要求更高的编程水平。
- 语法检查受限于 Groovy 语言及环境。
- 和传统 Jenkins 模型有很大差异。
- 与声明式流水线的实现相比,同一工作流会更复杂。
声明式流水线
声明式流水线具有以下优点。
- 更结构化,贴近传统的 Jenkins Web 表单形式。
- 更强大的声明内容能力,高可读性。
- 可以通过 Blue Ocean 图形化界面自动生成。
- 段落可映射到常见的 Jenkins 概念,比如:通知。
- 更友好的语法检查和错误识别。
- 提升流水线间的一致性。
声明式流水线具有以下缺点。
- 对迭代逻辑支持较弱(相比程序而言)。
- 仍在开发完善中(对于传统 Jenkins 中的部分功能缺乏支持)。
- 更严格的结构(更难实现自定义流水线代码)。
- 目前对于复杂的流水线和工作流难以胜任。