Skip to content

流水线

此章节主要介绍流水线的基本配置和管理。它的维护界面在CI/CD产品的侧边导航菜单中的“流水线”按钮。 主要功能包括

  • 流水线创建
  • 流水线修改
  • 流水线代码检查结果查看
  • 流水线端到端测试结果查看
  • 流水线触定时和CICD触发设置 其中CI/CD流水线首页如下图所示,主要展示了当前该租户项目下的所有流水线列表。

创建流水线

本小节主要介绍如何创建流水线。如下图所示,点击“新建流水线”按钮会弹出流水线创建的表单框。

目前,共支持三种流水线创建形式。

  1. 自由定义
  2. 模板创建
  3. 克隆流水线

自由定义

如上图所示,用户需要在“流水线名称”文本框中,输入流水线名称。

在“关联代码源”下拉框中选择需要关联的代码源。关于代码源的创建,请参考相关“关联代码仓库”章节。

备注:如果流水线不涉及到代码类任务,可以不选择代码源。

如果用户需要对该流水线登记邮件通知功能,需要点击邮件通知滑动按钮,邮件通知选项将展示如下图所示。

用户可以添加邮箱地址,并选择在流水线执行成功或流水线执行失败时,是否触发附件发送。附件为流水线执行日志的打包文件。

当上述参数都配置好之后,点击流水线创建页面中的“提交”按钮,流水线就被创建完成了。如下图所示,新的流水线将出现在流水线列表中。

用户点击流水线列表中的流水线名称就可以进入如下图所示的流水线的具体配置界面。

在流水线定义界面,我们可以通过点击“+”来添加流水线阶段,并可以在阶段中添加具体的流水线任务。

请参照流水线任务介绍章节,了解流水线任务的具体使用方法。

克隆流水线

对于“克隆流水线”,如下图所示,用户需要在“项目”和“流水线名称”下拉框中选择自己依赖的项目,并填写新的流水线名称来完成克隆流水线的操作。

关联代码源和邮件通知功能,同上一节“自由定义”介绍。

模板创建

如下图所示,模板创建流水线,用户需要在“流水线创建模板”下拉框中选择自己需要依赖的流水线模板名称。

流水线任务介绍

如下图所示,目前CI/CD平台共支持12种流水线任务。

根据类型不同,共分为如下5种任务类型。

  • 构建类任务
  • 代码扫描类任务
  • 测试类任务
  • 发布类任务
  • 部署类任务

构建类任务

构建类任务包括如下:

  • Maven任务
  • Gadle任务
  • Ant任务
  • Golang任务
  • JavaScript任务

构建类任务,任务界面类似,只是设定的编译环境不同。 这里以Maven任务的创建为例进行介绍。 用户点击任务选择任务选择界面中的“Maven”图标,系统将跳转到如下图所示的Maven任务配置界面。

用户需要输入任务名称,并提交执行脚本内容(shell语法)。执行脚本内容可以通过上传也可以通过在黑色文本框中输入。脚本编辑完之后,还需要选择使用的基本环境(Java和Maven版本)。最后点击“提交”按钮完成Maven任务的创建。

注意编译脚本的执行的目录是JENKINS流水线的工作空间。下面会详细介绍什么是JENKINS流水线的工作空间。

以上图为例,以cicd-tenant 租户下的cicd项目的hello-world流水线为例,此流水线的JENKINS流水线工作空间为编译节点的/home/cicd/jenkins/workspace/cicd-tenant_cicd_hello-world目录。如下图所示此目录包含代码仓库helloworld和在编译类任务中创建的编译脚本build.sh。

所以在编译脚本的第一步操作建议为 “cd helloworld/”(以helloworld为例),然后再进行具体的编译操作。

代码扫描类任务

代码扫描类任务包括如下:

  • SonarQube代码扫描
  • Coverity 代码扫描

这里我们以SonarQube任务为例进行介绍。

用户单击任务选择界面中“SonarQube”图标,系统将跳转至SonarQube代码扫描配置界面如下图所示。

用户需要输入任务名称以及认证配置和项目配置,然后点击“提交”按钮完成SonarQube代码检查任务的创建。

其中认证方式包括账号认证和Token认证。

项目配置方式有一般配置和高级配置。建议使用高级配置来定制自己的sonarqube参数。我们可以把高级配置,认为是在编写SonarQube的sonarqube-project.properties配置文件。高级配置界面如下所示。

SonarQube 高级配置参数

properties
sonar.projectKey=cicd-tenant-cicd-hello-world

sonar.source=src/

sonar.exclusions=folder1,folder2

sonar.java.binaries=../target

测试类任务

测试类任务包括如下:

  • Robot framework
  • Pytest 测试

以Robot测试为例,任务编辑界面如下所示。

用户需要输入任务名称,脚本的路径(此路径为测试编译节点的路径,脚本需要通知管理员放置到此位置)。并选择是全部执行,还是部分执行,如果是部分执行。需要在最下面的输入框中输入执行的脚本名称,并用空格进行分隔。

发布类任务

发布类任务如下:

  • Docker镜像构建

  • Docker镜像拷贝

以Docker镜像构建为例,用户单击任务选择界面中的“Docker镜像构建”图标,系统将跳转至Docker镜像配置界面如下图所示。

用户需要输入任务名称。

Dockerfile可以使用云端的,也可以选择代码库中的某一个位置的Dockerfile。

如果使用云端的Dockerfile,需要勾选“使用云端Dockerfile”前的单选框。此时将出现云端Dockerfile的编辑框,用户需要在编辑框内手工输入Dockerfile的内容。如果不使用云端Dockerfile,需要在“使用云端Dockerfile”文字下方的输入框中输入已有Dockerfile文件的位置。注意Dockerfile的路径是以JENKINS流水线工作空间为根目录的相对路径。

然后需要选择docker构建的上下文路径,这里也是以JENKINS流水线工作空间为根目录的相对路径。注意Dockerfile中的所有COPY操作都是以构建上下文路径为根路径的。

最后选择需要发布到哪个镜像库,并需要指定镜像的名称和后缀。最后点击“提交”按钮完成Dockerfile镜像的任务创建。

注意:镜像名称不能包含大写英文字母。

部署类任务

部署类任务目前只支持k8s部署。

用户单击任务选择界面的“镜像部署”图标,“镜像部署”界面如下图所示。

关于部署的镜像来源,目前支持三种镜像来源。

  1. 选择同一个流水线的Docker构建任务

  2. 选择同一个流水线的Docker镜像拷贝任务

  3. 选择固定的Harbor镜像地址来拉取镜像

一般用户选择同一个流水线的Docker构建任务来获取镜像来源。

然后选择要部署的服务名称。等待时间是指从后台部署到部署成功的等待时间,建议设置240s。

备注:如果因为部署等待时间太短,导致在指定时间内未检测到服务部署完成导致的流水线失败,可以通过改大等待时间来解决。

上述配置完成之后,点击“提交”按钮完成创建。

流水线记录查看

如下图所示,用户单击某一个流水线之后,会在“执行记录”选项卡下面显示当前构建的所有执行记录。

如下图所示,用户单击“统计记录”选项卡,之后会以图表的形式显示当前流水线的所有执行结果。

流水线CI触发和定时触发设置

本系统支持设置流水线通过CI触发和定时触发。点击流水线的“设置”选项卡,流水线的CI触发和定时触发如下图所示。

点击“编辑按钮”之后,如下图所示,可以为流水线增加CI触发的条件和定时触发的时间设置。

CI触发

触发条件和含义如下所示:

触发条件含义
create new tag提交新的tag
commit in branch提交新的代码
merge request合并分支

触发路径如果配置了,那么只要触发路径上的文件被修改才会触发CI构建。

定时触发

用户可以通过配置定时执行的时候,并选择响应分支来实现流水线的定时触发。

流水线测试结果

本系统支持流水线测试结果的展示。假如流水线中配置了“robot测试”或者“pytest测试”,如下图所示,可以通过点击“自动化测试”选项卡来查看自动化测试的结果。

通过点击“详情连接”,可以如下图所示查看测试的具体执行记录。

流水线代码质量

本系统支持流水线代码质量结果的展示。假如流水线中配置了“SonarQube”任务,如下图所示,可以通过点击“代码质量”选项卡来查看自动化SonarQube的扫描结果。

用户可以点击报告中的结果数据,系统会自动链接到SonarQube界面。用户需要登录自己的账号密码进行登录查看结果。