• 如何选择脚本式语法和声明式语法
  • 脚本式流水线
  • 声明式流水线

如何选择脚本式语法和声明式语法

对于新用户和那些希望流水线具备传统 Jenkins 一样可读性的用户来说,声明式流水线更容易学习和维护。这是以灵活性为代价换取结构不支持的功能。

脚本式流水线更加灵活,提供了 “超级用户” 的选项,即允许用户不受结构约束实现更多功能。

不过,任何一种流水线类型对大多数场景而言都同样适用。

脚本式流水线

脚本式流水线具有以下优点

  • 更少的代码段落和弱规范要求。
  • 更强大的程序代码能力。
  • 更像编写代码程序。
  • 传统的流水线即代码模型,用户熟悉并向后兼容性。
  • 更灵活的自定义代码操作。
  • 能够构建更复杂的工作流和流水线。

脚本式流水线具有以下缺点

  • 普遍要求更高的编程水平。
  • 语法检查受限于 Groovy 语言及环境。
  • 和传统 Jenkins 模型有很大差异。
  • 与声明式流水线的实现相比,同一工作流会更复杂。

声明式流水线

声明式流水线具有以下优点。

  • 更结构化,贴近传统的 Jenkins Web 表单形式。
  • 更强大的声明内容能力,高可读性。
  • 可以通过 Blue Ocean 图形化界面自动生成。
  • 段落可映射到常见的 Jenkins 概念,比如:通知。
  • 更友好的语法检查和错误识别。
  • 提升流水线间的一致性。

声明式流水线具有以下缺点。

  • 对迭代逻辑支持较弱(相比程序而言)。
  • 仍在开发完善中(对于传统 Jenkins 中的部分功能缺乏支持)。
  • 更严格的结构(更难实现自定义流水线代码)。
  • 目前对于复杂的流水线和工作流难以胜任。