从前面的小节中我们看到在创建 Jenkins 任务的时候有好几种类型,如果你专门安装了 Maven 相关插件,可能还会有一个【构建一个 maven 项目】的任务类型,那这些任务类型究竟有何区别,以及我们在创建任务时这些类型该如何选择呢?各个类型的具体区别其实看描述就能有个大概的了解,我这里就不重复描述了,最有效的做法就是每种类型的任务都建立几个,测试下看看有什么差异,这种方式很快就会了解不同类型任务的功能特性。
我这里主要介绍下【构建一个自由风格的软件项目】、【流水线】、【文件夹】这三种类型。
构建一个自由风格的软件项目:这是 Jenkins 的主要功能, Jenkins 将会结合任何 SCM 和任何构建系统来构建你的项目,甚至可以构建软件以外的系统。
流水线:精心地组织一个可以长期运行在多个节点上的任务。适用于构建流水线(更加正式地应当称为工作流),增加或者组织难以采用自由风格的任务类型。
文件夹:创建一个可以嵌套存储的容器。利用它可以进行分组。 视图仅仅是一个过滤器,而文件夹则是一个独立的命名空间, 因此你可以有多个相同名称的的内容,只要它们在不同的文件 夹里即可。
从描述中我们可以认为【文件夹】类型的任务就是一个独立的集合,它可以针对这个文件夹有自己独立的特殊配置文件,【文件夹】类型任务下面可以再建立所有类型的任务。自由风格类型的任务所有配置都在 Jenkins 上面进行配置修改,流水线类型的任务的配置是通过一种特定的语法脚本来描述。这些脚本文件可以通过代码仓库进行管理起来。我们可以创建一个【流水线】类型的任务,看看详细情况:
新建一个【流水线】类型的任务,名称为 jenkins-pipeline-test-task
:
可以看到很多的配置选项都没了,就剩一个编写流水线脚本的文本框:
展开【try sample Pipeline...】选项,选择【Hello World】,我们会看到文本框中会自动填入一段流水线代码:
【保存】后再【立即构建】看看效果吧,日志输出了 "Hello World":
【流水线】类型的任务可以做到一些【自由风格】任务做不了的事情,并且一个最大的好处就是可以做到"配置及代码",【流水线】类型的脚本文件除了直接在文本框里面输入还可以通过代码仓库进行管理。Jenkins 流水线任务支持脚本式的语法和申明式语法,两种语法的区别简单讲就是申明式语法有严格的语法结构,更加标准化,而脚本式语法就更加随意些。两种语法的具体区别可以看看官网的说明 https://www.jenkins.io/zh/doc/book/pipeline/syntax/#compare,在我们的后面学习中,我都将采用申明式语法,并且官方也是推荐采用申明式语法。