zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Jenkins - 构建流水线

Jenkins 构建 流水线
2023-09-14 09:00:40 时间

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/

8 - 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:///blue/pipelines”链接,进入到全局Blue Ocean界面。
在具体任务界面点击“Open Blue Ocean”按钮,进入到此任务的Blue Ocean界面。
这里以具体任务的Blue Ocean界面为例:

8.2 通过Blue Ocean创建流水线任务

在Jenkins界面点击“Open Blue Ocean”按钮,或者 打开“http:///blue/pipelines”链接,进入到全局Blue Ocean界面。
流水线---》创建流水线,即可根据指示来创建一个新的流水线任务。

如果源码仓库有Jenkinsfile,则会直接创建任务,为搜索到的分支执行Jenkinsfile内容
如果源码仓库没有Jenkinsfile,则会跳转到Blue Ocean的编辑器界面,通过界面的方式编辑Jenkinsfile并上传到代码仓库中。