Jenkins - 构建流水线
1 - 以流水线的方式进行构建
关联多任务形成流水线的两种方法
- 通过定义项目的后续项目,将项目直接关联起来按顺序执行,
- 另外定义一个用于统筹管理的项目,定义各项目之间的关联性,然后以流水线的方式执行
2 - 项目直接关联
2.1 指定下游任务
操作简单,但必须逐个确认各个项目中的定义,才能了解项目之间的关联性,而且只能在前一个项目中进行设置。
此外,不支持在多个工作流中重复使用同一个项目。
对前一个项目的配置界面的“构建后操作”部分,点击“构建其他工程"然后定义继续执行的项目。
设置完成后可以在相关项目的首页看到“下级项目(Downstream Project)”与“上级项目”的信息。
2.2 指定上游任务
3 - 流水线关联多个项目
使用流水线的条件
- Jenkins版本为2.x或以上
- 安装了Pipeline插件
支持在多个工作流中重复使用同一个项目。
创建“流水线”类型项目
---》根据流水线语法编写脚本并保存
---》运行流水线任务后,可以在流水线项目页面查看到图形化方式展现的项目关系、运行状态和执行结果
---》点击相应的链接,可以查看到具体项目的信息
这里是以脚本式的Jenkins Pipeline来说明
node { # 节点,流水线运行的环境(虚拟机、容器、K8s中的Pod),不同的步骤可以在不同的节点上运行
stages { # 阶段,对不同任务做阶段的声明和划分
stage('Build') { # 阶段,对不同任务做阶段的声明和划分
steps {echo '111111'} # 步骤,具体实施的基本单元
steps {echo '222222'}
}
stage('Test') {
steps {echo '333333'}
}
}
}
4 - 多分支流水线
多分支流水线是 Jenkins 中的一种流水线类型,允许在 Jenkinsfile 的帮助下为源码管理(SCM)库中的每个分支自动地创建一支流水线。
- 可以为项目的不同分支创建不同的Jenkinsfile
- 能够自动发现、管理 和执行不同分支包含的Jenkinsfile脚本
Jenkins界面的“新建任务”,然后选择“多分支流水线”任务类型
在“分支源”界面出现“发现分支”选项,说明该任务支持自动发现项目的分支。
配置Jenkinsfile的路径(默认为相对路径)
设置代码扫描的触发条件
项目的任务配置完成后,会在任务界面自动创建与分支名称一致、数目相等的子任务。
5 - Pipeline-as-code
5.1 Pipeline-as-code简介
Jenkins Pipeline 提供了一种基于脚本语言的方式来配置Jenkins任务,这种任务配置方法就是Pipeline-as-code。
- Pipeline任务不受Master节点重启的影响,都可以继续运行
- Pipeline的每个阶段都可以暂停,并且等待用户输入或操作复核后继续执行
- 通过Groovy脚本可以实现更加复杂的功能
- 通过插件可以支持自定义的DSL扩展,从而扩展流水线的功能
5.2 Pipeline脚本
Pipeline脚本的存放位置
- 直接写在Jenkins任务配置
- 创建一个Jenkinsfile,提交到项目的代码仓库中,每次通过代码触发或主动拉取代码,执行Jenkinsfile中定义的阶段和步骤来进行构建
一般情况下,推荐采取创建Jenkinsfile并提交到代码仓库的方式
- 可以自动为所有分支和拉取请求创建Pipleline
- 可以被项目成员查看和编辑
- 可以对Pipeline的代码进行控制、审核和迭代
5.3 编写Pipeline
Jenkins支持两种Pipeline语法来实现Pipeline脚本
- 脚本式:基于Groovy语法,丰富灵活,能够实现复杂的功能
- 声明式:Jenkins封装的脚本语法,易于书写和阅读,但对于复杂的功能支持有限
一般情况下,建议使用声明式的Pipeline,能够满足绝大多数使用场景和需求。
5.4 常用的Pipeline步骤
- 拉取源码
- 构建Maven并上传到Artifactory仓库
- 单纯进行Maven构建打包
- 归档构建结果
- SonarQube代码扫描
- 发送邮件
- 等待参数输入,再继续执行
- 在多个节点上并行执行任务
- 引用外部的Groovy脚本
6 - 流水线语法
在流水线项目的脚本输入框中编写代码,必须遵循一定的语法规则(Groovy格式)。
用代码描述流水线-Jenkins Pipeline 详解:http://www.uml.org.cn/jchgj/201802051.asp
在流水线部分的下方有“流水线语法”的链接,根据提示完成编写后,点击“生成流水线脚本”就会获得生成的Groovy代码。
7 - 深入了解流水线
官网信息
流水线:https://jenkins.io/zh/doc/book/pipeline/getting-started/
- 流水线入门:https://jenkins.io/zh/doc/book/pipeline/getting-started/
- 使用 Jenkinsfile :https://jenkins.io/zh/doc/book/pipeline/jenkinsfile/
- 流水线语法:https://jenkins.io/zh/doc/book/pipeline/syntax/
8 - Blue Ocean
- Blue Ocean:https://jenkins.io/zh/doc/book/blueocean/
- 使用Blue Ocean生成Pipeline:https://jenkins.io/zh/doc/tutorials/create-a-pipeline-in-blue-ocean/
Blue Ocean是Jenkins的一个更加简洁美观地展示流水线任务的模块, 用来适应Jenkins Pipeline和 Freestyle jobs任务
可以让程序员执行任务时,降低工作流程的复杂度和提升工作流程的清晰度
- 可以快速直观地理解管道状态
- 引导用户通过直观的、可视化的过程来创建Pipeline
- 适应团队中每个成员不同角色的需求
- 简化异常处理,在需要干预和/或出现问题时精确定位
8.1 安装Blue Ocean
安装方式有两种
- 作为插件方式安装在已有的Jenkins上
- 通过容器方式,直接启动Blue Ocean的镜像
[root@md200 ~]# docker images |grep blue
jenkinsci/blueocean latest c1fc8b2b664c 2 weeks ago 563MB
[root@md200 ~]#
[root@md200 ~]# docker ps -a |grep blueocean
a99b21fb6ce8 jenkinsci/blueocean "/sbin/tini -- /usr/…" 2 weeks ago Up 31 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp myjenkins
[root@md200 ~]#
在Jenkins界面点击“Open Blue Ocean”按钮,或者 打开“http://
在具体任务界面点击“Open Blue Ocean”按钮,进入到此任务的Blue Ocean界面。
这里以具体任务的Blue Ocean界面为例:
8.2 通过Blue Ocean创建流水线任务
在Jenkins界面点击“Open Blue Ocean”按钮,或者 打开“http://
流水线---》创建流水线,即可根据指示来创建一个新的流水线任务。
如果源码仓库有Jenkinsfile,则会直接创建任务,为搜索到的分支执行Jenkinsfile内容
如果源码仓库没有Jenkinsfile,则会跳转到Blue Ocean的编辑器界面,通过界面的方式编辑Jenkinsfile并上传到代码仓库中。
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。