流水线

路径:开发 > 流水线

1. 概述

Choerodon从0.23.0版本后,将CI流水线与CD流水线进行了功能与页面的融合,因此支持用户在流水线页面编排从CI到CD的完整DevOps流程。流水线中的CI阶段使用的是 GitLab CI 工具,而CD阶段使用的是Activiti工具,由此实现了DevOps流水线可视化的编排与自动化的执行。

注意:“部署-应用部署-流水线”模块中创建的流水线及其对应的执行记录将在Choerodon V0.24中移除,请尽快将部署模块中的CD流水线维护至新的流水线页面。

2. 流水线管理

2.1 创建流水线

1.点击页面顶部操作栏的创建流水线,进入创建流水线页面。

image

2.填写流水线名称,该名称在项目下唯一;

3.选择关联应用服务;且此处的应用服务应满足以下条件:

  • 应用服务状态应为“启用”;
  • 应用服务须有master分支;
  • 应用服务尚未关联其他流水线;
  • 当前用户须拥有developer及以上GitLab权限的应用服务;

此处默认最多展示出20个满足以上条件的应用服务,可点击“加载更多”或通过模糊搜索来选择应用服务。

4.高级设置;可直接使用其中的默认设置。此处给出了默认的CI流程Runner镜像;同时支持用户在此自定义该条流水线中的CI流程Runner镜像;

此处定义的CI流程Runner镜像会作为整条流水线中CI阶段里所有构建类型任务中的默认Runner镜像,在构建任务中同样支持自定义CI任务Runner镜像。

5.管理阶段;创建界面中会预置1个CI阶段和1个CD阶段;用户可在此基础上维护管理所需的流水线阶段。

CI阶段:添加阶段时,选择为阶段属性为CI阶段后,用户便只能在此阶段中添加CI类型的任务,其中包含:构建、代码检查、发布Chart以及自定义类型的CI任务;

CD阶段:添加阶段时,选择为CD阶段后,用户就只能在此阶段中添加CD类型的任务,其中包含:部署、主机部署以及人工卡点类型的CD任务;

同一CI阶段中的任务仅能“并行”执行;同一CD阶段中的任务仅能“串行”执行;

  • 添加阶段:点击阶段前后的添加图标,右侧会弹出添加阶段的界面;首先选择阶段属性(分为CI阶段与CD阶段);然后输入阶段名称;

流水线关联的应用服务为测试类型的应用服务时,不能添加CD类型的阶段; 流水线中CD阶段后面不能添加CI阶段。

  • 修改阶段:点击阶段内的修改图标,右侧会弹出阶段的修改界面,支持在此修改阶段的名称。

  • 删除阶段:点击阶段内的删除图标,确认删除后,即可成功删除阶段已经其中含有的所有任务。

6.添加CI任务;点击CI阶段中的添加任务,会从右侧弹出任务添加框,首先需要选择任务类型,目前支持构建代码检查发布Chart以及自定义类型的任务;

image

  • 构建类型任务:通过预置各种常用语言的构建模板,为用户提供高效、易配置的构建能力,从而提高构建效率;

    • 选择添加此类型任务后,首先需要填写任务名称、配置触发分支,触发分支的匹配方式支持以下4种:

      分支类型匹配:默认可选master、feature、bugfix、hotfix、release以及tag类型,此外还支持用户在此输入自定义的分支类型;若不填写,则默认触发分支为所有类型的分支与Tag。之后在对应类型的分支上提交代码或做其他变更,便会触发此任务。

      正则匹配:触发分支的匹配方式支持正则表达式。你可以输入一个普通分支,比如 master 或者 dev。也可以使用Ruby语言支持的正则表达式语法。例:如果想匹配多个分支,比如 master 和 dev,可以输入 master|dev;如果想匹配以 feature 开头的分支,可以输入 ^feature.*。完整的正则表达式支持请查看:https://ruby-doc.org/core/Regexp.html。

      精确匹配:精确匹配的方式支持精确选择或输入触发该任务的具体分支名称;支持多填多选;若不填写,则默认为所有分支和tag。

      精确排除:精确排除的方式支持用户选择或输入某几个具体的分支名称以此来精确排除,被排除的分支变更后将不会触发流水线任务;此处支持多填多选;若不填写,则默认为没有需要排除的分支或tag。

    • 接着还需确定该CI任务的Runner镜像;

      可直接使用高级设置中默认的CI Runner镜像,也可输入自定义的CI任务Runner镜像。

    • 确定是否使用共享目录设置 ;共享设置用于将任务中产生的工件上传至预置的共享目录,或者从共享目录中下载本条流水线中最近一个任务上传的工件进行使用。

      上传共享目录choerodon-ci-cache:若勾选上传共享目录,则会将此任务中产生的工件或其它文件上传至共享目录,供之后的任务下载使用。

      下载共享目录choerodon-ci-cache: 若勾选下载共享目录,则会在此任务中下载使用该条流水线中已上传至共享目录中的工件,用户便可在此任务中使用。

    • 最后,选择对应的构建模板;目前预置了Maven模板、Npm模板、Go模板,用以支持常用语言的构建。若不选择构建模板,也可按照需求自主组合构建步骤。

      (1)Maven模板:该模板中包含了以下几个步骤:Maven构建->Docker构建;

      步骤一:Maven构建;执行mvn package命令或其他shell命令。还支持用户在此配置公有或私有的依赖库。

      步骤二:Docker构建;执行docker build命令,用于生成Docker镜像。注意:由于该步骤中kaniko指令的限制,建议将此步骤置于同任务中最后一个步骤。

      (2)Npm模板:该模板中包含了以下几个步骤:Npm构建->Docker构建;

      步骤一:Npm构建;执行npm install、npm build run以及npm publish命令。

      步骤二:Docker构建;执行docker build命令,用于生成Docker镜像。注意:由于该步骤中kaniko指令的限制,建议将此步骤置于同任务中最后一个步骤。

      (3)Go模板:

      步骤一:Docker构建;执行docker build命令,用于生成Docker镜像。同时其中包含了Go语言构建所需的命令。

      (4)自定义步骤:直接点击图中添加步骤的按钮,自主选择步骤即可。

    • 发布Chart:即Chart构建;执行chart build命令,用于生成helm chart包。

      • 选择添加此类型任务后,首先需要填写任务名称、配置触发分支;触发分支的匹配方式支持:分支类型匹配、正则匹配、精确匹配以及精确排除。

      • 接着还需确定该CI任务的Runner镜像; > 可直接使用高级设置中默认的CI Runner镜像,也可输入自定义的CI任务Runner镜像。

    • 代码检查:借助SonarQube实现代码检查的功能。

      • 选择添加此类型任务后,首先需要填写任务名称、配置触发分支;触发分支的匹配方式支持:分支类型匹配、正则匹配、精确匹配以及精确排除。

      • 接着还需确定该CI任务的Runner镜像;

        可直接使用高级设置中默认的CI Runner镜像,也可输入自定义的CI任务Runner镜像。

      • 最后,需要为此任务配置SonarQube。目前支持2种方式:

        (1)默认配置:即系统默认配置的SonarQube。

        (2)自定义配置:自定义配置需维护SonarQube的地址、用户名与密码或Token;测试连接通过后,即可成功创建此任务。

    • 自定义任务:支持粘贴YAML格式内容创建自定义任务;使得任务添加更加灵活。

      按照界面中给的格式,粘贴YAML格式内容来创建自定义任务。

  1. 添加CD任务;点击CD阶段中的添加任务,会从右侧弹出任务添加框,首先需要选择任务类型,目前支持部署主机部署以及人工卡点类型的任务;

image

  • 部署类型任务:即Choerodon环境部署,通过预设应用服务部署所需的元素,来达到自动化部署和快速手动部署的目的;

    • 选择添加此类型任务后,首先需要填写任务名称、选择环境、配置触发分支;触发分支的匹配方式支持以下4种:

      分支类型匹配:默认可选master、feature、bugfix、hotfix、release以及tag类型,此外还支持用户在此输入自定义的分支类型;若不填写,则默认触发分支为所有类型的分支与Tag。

      正则匹配:触发分支的匹配方式支持正则表达式。你可以输入一个普通分支,比如 master 或者 dev。也可以使用Ruby语言支持的正则表达式语法。例:如果想匹配多个分支,比如 master 和 dev,可以输入 master|dev;如果想匹配以 feature 开头的分支,可以输入 ^feature.*。完整的正则表达式支持请查看:https://ruby-doc.org/core/Regexp.html。

      精确匹配:精确匹配的方式支持精确选择或输入触发该任务的具体分支名称;支持多填多选;若不填写,则默认为所有分支和tag。

      精确排除:精确排除的方式支持用户选择或输入某几个具体的分支名称以此来精确排除,被排除的分支变更后将不会触发流水线任务;此处支持多填多选;若不填写,则默认为没有需要排除的分支或tag。

  1. > 触发分支设置成功后,用户在对应的触发分支上提交代码或做其他变更时,便会触发部署任务。而部署任务会从触发分支上取最近一次Commit对应的应用服务版本进行部署。
  2. - 接着还需选择部署模式(部署模式有新建实例和替换实例两种);
  3. - 最后,选择部署配置;此处会根据您选的应用服务与环境自动匹配所有关联的部署配置,您可根据给出的配置信息进行选择。若所选应用服务与环境暂无对应的部署配置,则需要在部署配置页面创建一个对应的部署配置。
  4. > 若修改了给出的配置信息后,所选部署配置中的配置信息也将随之改动。同时,若部署配置中的配置信息被修改后,那么流水线中已选择该部署配置的部署任务在之后的自动部署时,会直接使用最新的部署配置。
  • 主机部署类型任务:用于将制品直接部署到主机上。

    • 选择添加此类型任务后,首先需要填写任务名称、配置触发分支;触发分支的匹配方式支持:分支类型匹配、正则匹配、精确匹配以及精确排除。

    • 主机设置:填写主机IP、端口以及配置主机账号,测试连接通过后,才能成功添加主机部署任务。

    • 主机部署设置:目前分为镜像部署、jar包部署与自定义命令的模式。

      (1)镜像部署:可选部署来源为流水线制品部署与匹配制品部署;

      流水线制品部署:支持将流水线中Docker构建任务产生的镜像直接部署到目标主机上;需选择关联一个含有Docker构建步骤的构建类型任务,并自定义容器名称;若某个构建任务中存在多个Docker构建步骤,则默认选择其中第一个Docker构建步骤生成的镜像。

      匹配制品部署:支持持续部署项目下某个镜像仓库中某个类型的镜像版本;需选择项目镜像仓库、确定镜像、配置部署的镜像版本规则,并自定义容器名称。

      (2)jar包部署:可选部署来源为流水线制品部署与匹配制品部署;

      流水线制品部署:支持将流水线中构建任务产生的jar包直接部署到目标主机上;需选择关联一个含有’上传jar包至制品库’或“Maven发布”步骤的“构建类型”任务。若所选任务中存在多个满足条件的步骤,则只会部署所选任务中第一个满足条件的步骤产生的jar包;

      匹配制品部署:支持持续部署项目下某个制品库中某个类型的jar包版本;需选择Nexus服务、项目制品库、groupID、artifactID,并通过正则匹配jar包版本。

      (3)自定义命令:即ssh指令;支持用户在此输入shell指令对主机进行操作。

  • 人工卡点类型任务:通过人工审核的方式对流水线任务进行卡点,审核通过方可执行后续的阶段或任务。

    • 选择添加此类型任务后,首先需要填写任务名称、配置触发分支;触发分支的匹配方式支持:分支类型匹配、正则匹配、精确匹配以及精确排除。

    • 选择审核人员(从项目下选择审核人员,可多选)。

    • 最后选择审核模式,其中包括会签和或签。

      会签是指所选的审核人员全部审核通过后才算通过,其中有一人选择中止,则此任务中止;或签是指所选的审核人员中,一人审核通过后此任务便通过,一人选择中止则此任务中止,以其中第一个审核人员的审核结果为准。

2.2 修改流水线

在树结构中选择某条流水线,点击进入该流水线的主页,然后点击顶部的修改按钮,右侧将弹出流水线的修改界面。

此界面支持修改流水线的CI流程Runner镜像以及其中所有CI阶段与CD阶段,包括各个阶段中所有的任务。

image

2.3 全新执行流水线

全新执行流水线用于在某个分支上手动执行流水线。

在树结构中选择某条流水线,然后点击该条流水线后面的三点图标按钮,点击选择全新执行按钮,此时界面中弹出全新执行弹框,需要为此次执行选择目标分支。

全新执行操作弹框中选择的分支会作为此次执行的触发分支,只有触发设置中含有该触发分支的流水线任务才会被触发并执行。

执行后,系统会选取该分支上最近的一次提交来执行整条流水线。若此次执行触发了CD阶段中的部署任务,则会选取该分支上最近一次提交产生的服务版本进行部署。

目标分支仅能从该应用服务下已有的分支中进行选择。

image

2.4 停用/启用流水线

  • 在树结构中选择一条启用状态的流水线,点击对应的三点图标,选择停用,确认后,即可停用流水线。

若流水线已停用,则仅能进行以下操作:启用;删除。

  • 在树结构中选择一条停用状态的流水线,点击对应的三点图标,选择启用,确认后,即可启用流水线。

2.4 删除流水线

在树结构中选择一条流水线,点击对应的三点图标,选择删除,确认后,即可删除流水线。

3. 查看流水线执行记录

image

  • 在页面左侧的树结构中,展示了该项目下所有的CI流水线及其产生的记录。对应的流水线下方,列出了所有与之对应的执行记录;每条执行记录都有其唯一的编号,此外树结构中还展示了各条记录的状态与执行时间。而不同的执行结果支持执行不同的操作,目前执行记录的执行结果存在以下几种情况:

    执行结果(状态)含义对应操作
    成功流水线中所有任务均执行成功
    失败流水线中有任务执行失败重试
    准备中流水线还未开始执行,处于pendind状态取消执行
    执行中流水线中有任务正在运行取消执行
    已取消流水线被取消执行后的状态重试
    待审核流水线正停留在人工审核的节点,包括人工卡点与阶段间的人工审核人工审核
    已终止人工审核时,点击终止任务,最后流水线为已终止状态
  • 点击树结构中某条记录后,右侧主页面中显示出该条记录的所有详情,其中包括:此次执行记录的基本信息以及各阶段、各任务的执行情况。

    • 点击顶部操作栏的流水线记录详情,便可查看此次执行的基本详情信息:流水线名称、关联的应用服务、执行结果、触发人员、执行时间、流程耗时、以及提交信息。

    • 在执行记录主页面,可以查看到各阶段、各任务的执行状态与执行耗时。对于不同类型的任务,成功执行后,界面中支持的操作也有所不同。

  1. <table><thead><tr><th>阶段属性</th><th>任务类型</th><th>成功执行后支持操作</th></tr></thead><tbody><tr><td>CI阶段</td><td>构建</td><td>查看日志、重试</td></tr><tr><td>CI阶段</td><td>代码检查</td><td>查看日志、重试、查看代码质量报告</td></tr><tr><td>CI阶段</td><td>发布Chart</td><td>查看日志、重试</td></tr><tr><td>CI阶段</td><td>自定义任务</td><td>查看日志、重试</td></tr><tr><td>CD阶段</td><td>部署</td><td>查看日志</td></tr><tr><td>CD阶段</td><td>主机部署</td><td></td></tr><tr><td>CD阶段</td><td>人工卡点</td><td></td></tr></tbody></table>
  2. - 流水线CI阶段中所有类型的任务,只有处于`成功`、`失败`或`已取消`状态时,才允许执行`重试`操作。CD阶段中的任务,目前仅`失败`状态可允许执行`重试`操作。

4. 阅读更多