Jenkins实践——创建Pipeline的两种方式

General

General是Pipeline的一些基本配置。名称,描述和一些基本设置。
以下简单介绍几个常用设置。其余没有介绍的设置项,大家可以参考Jenkins的官方文档或者帮助文档。
①.GitHub 项目
该pipeline的源代码托管在Github中,选中此选项,可以添加github中的项目地址


②.Preserve stashes from completed builds
想保留最近几次历史构建就可以勾选此项并填入想要保留的构建次数。每次构建都需要占不少的空间,因此不建议大量保存构建历史。


③.丢弃旧的构建


我这里设置了丢弃构建,仅保留最近一周的构建历史,不限定构建次数。


构建触发器

构建触发器很好理解,就是pipeline构建的触发条件。以下简单介绍一下各个触发条件。这些触发条件可以根据项目需要选择多个,组合使用。


我的代码托管在gitlab中,我希望在代码有更新时自动触发构建,所以选择了“轮询SCM”。


高级项目选项
这个是给项目设置一个展示名称,没有特殊作用,不需要过多关注。
流水线

这一部分是Pipeline的主要部分,在这一步我们将开始定义流水线
定义流水线使用的是Groovy脚本,保存脚本有两种方式,第一种是直接写在Jenkins工程中,另一种是存放在代码仓库项目目录下的Jenkinsfile中,实际项目中大多选择将脚本存放在项目目录中,但这仅限于项目数量不多的情况下使用。如果项目过多,Jenkinsfile散落在各个项目中,也会不便维护,这时候可以创建目录集中保存Jenkinsfile,便于查找和维护。

选择定义流水线的方式


我使用的是【PipelinescriptfromSCM】,只添加了代码仓库地址和令牌信息,其余保持默认。


当然,在你考虑用这种方式创建流水线之前,你必须已经设计好的流水线的步骤,并且写好了可靠的Jenkinsfile。

Pipeline支持两种语法,一种是Declarative Pipeline(在Pipeline 2.5中引入)和Scripted Pipeline。Declarative Pipeline对用户来说,语法更严格,有固定的组织结构,更容易生成代码段,使其成为用户更理想的选择。Scripted pipeline更加灵活,因为Groovy本身只能对结构和语法进行限制,对于更复杂的pipeline来说,用户可以根据自己的业务进行灵活的实现和扩展。由于篇幅有限所以在此只介绍使用最为广泛的Declarative Pipeline。

在写Jenkinsfile之前我们先来熟悉一些名词。

● 
Agent:
在Jenkins集群中,一个agent相当于一个slave机器,接收并执行master机器分派的任务。

● Stage:
Pipeline中的不同阶段,例如:“构建”,“测试”和“部署”。

● Step:
步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。


下面是我编写的一个由 【编译】
—— 【编译Docker镜像】
—— 【部署】
—— 【测试】
这几个阶段组成的一条流水线。不熟悉PipelineScript的同学,可以先熟悉一下语法,语法不是文章关注的重点。