在之前的文章《持续集成与持续交付之间的联系和区别》中,我们提到了持续集成与持续交付的基本概念以及两者之间的联系和区别。而本文将更进一步,旨在为大家详细介绍如何通过Choerodon 猪齿鱼的CD流水线功能来帮助项目团队实现持续交付。
什么是持续交付
在进行功能介绍之前,我们先来回顾下持续交付的概念。持续交付是指在持续集成的基础上,将集成后的代码持续不断地部署到开发、测试或预生产环境进行测试与验证的能力。也就是说,持续交付是对非生产环境的每一次变更进行交付,而最终选择部署到生产环境的将会是一项完整的功能或一组功能,又或者是一项完整的应用或服务。
上图很好的展示了持续交付的整个流程,在通过持续集成之后,便可以持续地将代码部署至开发或测试环境。最后,待整体功能与需求测试验收完成,就可以将其手动部署至生产环境之中。当然,还需要注意的是:
持续交付并不意味着每一次变化都要尽快部署到生产环境。而是意味着每一次变化都是随时可以部署的。 —— Carl Caum(Caum,2013)
为什么要进行持续交付
众所周知,持续交付是DevOps实践中重要的一环,但持续交付能为团队带来哪些好处呢?
- 快速发布。能够快速响应业务需求,并更快地实现软件价值;
- 持续交付倡导的频繁部署以及自动部署,是持续测试的前提,进而提高软件质量;
- 高质量的软件发布标准。整个交付过程标准化、可重复、可靠;
- 整个交付过程可视化,方便团队人员了解项目进度;
- 更先进的团队协作方式。从需求分析、产品的用户体验到交互 设计、开发、测试、运维等角色密切协作,相比于传统的瀑布式软件团队,更少浪费。
如何通过Choerodon实现持续交付?
Choerodon平台通过CD流水线的形式将开发模块与部署模块进行串联,用户只需在流水线中预设对应的部署任务或人工卡点任务,便能将目标应用服务集成后的代码自动部署到开发环境、测试环境、预生产环境以及生产环境(流转至生产环境阶段需要通过设置审批人员)。然后再设置人工卡点任务,即可通过邮件与站内信的方式及时通知到产品负责人或测试人员对新的部署进行验收与测试。
创建持续交付流水线
首先在“部署-应用部署-流水线”菜单页面,点击创建流水线,此时出现下图的流水线创建页面。项目人员可在此按需求定义多个流水线阶段,同时也可在各阶段中定义多个任务。
流水线基础设置
在创建CD流水线时,需自定义该条流水线的名称,并设置该条流水线的触发方式为自动触发或是人工触发;
- 自动触发:满足所有触发条件时,该流水线才会自动执行。若选择自动触发,则该流水线中阶段一的任务一只能为部署类型的任务来作为触发器。
- 手动触发:需要手动点击执行,才能触发流水线。若选择手动触发,则需要为该流水线选择触发人员(可多选),只有被选中的人员才有权限执行该流水线。若流水线中含有部署任务,则要求触发人员必须拥有流水线中所有部署任务对应的环境权限。
添加与设置阶段
- 添加阶段;点击阶段之间的添加按钮,即可成功添加一个阶段;此外还支持修改该阶段的名称,设置阶段之间的流转方式,若选择手动流转,需要为此设置审核人员(可多选,且默认为其中一个人员审核通过则该任务通过,第一个审核人员点击中止则该任务中止)。
- 任务设置;每个阶段下,需要选择设置对应阶段中任务的执行方式。分别是:任务串行与任务并行,其中任务串行是指阶段中的所有任务从上至下依次执行;并行是指阶段中所有任务同时执行,但阶段中任务并行时,此阶段中便不能添加人工卡点的任务。
- 只有当一个阶段中的所有任务均执行成功后,才能进入下一阶段。
添加部署任务
为了实现部署流程的可重复性、可靠性以及可伸缩性,持续交付流水线中支持了自动部署的任务类型;但需要在其中配置应用服务、触发版本类型、环境以及实例部署的相关信息,具体步骤如下:
- 选择任务类型为部署后,需填写任务名称,并在项目下选择一个已存在版本的应用服务;
- 输入或选择服务版本类型(此处可以选择默认给出的版本类型或手动输入自定义的版本类型。若不填写此栏,则默认自动部署该应用服务的所有版本);
- 选择环境;只可选择运行中的环境;
- 选择部署模式(部署模式有新建实例和替换实例两种);
- 选择部署配置, 此处会根据您选的应用服务与环境自动匹配所有关联的部署配置,您可根据给出的配置信息进行选择。若所选应用服务与环境暂无对应的部署配置,则需要在部署配置页面创建一个对应的部署配置。
若流水线中仅存在这一个部署任务,那么当开发人员提交代码,跑完CI,生成了满足条件的应用服务版本后(生成的版本名称中须包含在任务中定义的版本类型),该条流水线便会被触发。当流水线中存在多个部署任务,第一次触发流水线时,需要满足其中所有流水线的触发条件(生成满足条件的服务版本)。
添加人工卡点任务
人工卡点任务用于为阶段中的部署任务添加控制与审核人员,指定的审核人员审核通过后,流水线才能继续执行。若审核未不通过,整条流水线便会在此任务节点终止。添加人工卡点任务的步骤如下:
- 选择人工卡点任务类型后,需要填写任务名称,并选择审核人员(可多选);
- 若选择了多个审核人员,还需选择审核模式,其中包括:会签和或签。(会签是指所选的审核人员全部审核通过后才算通过,其中有一人选择终止,则此任务终止;或签是指所选的审核人员中,一人审核通过后此任务便通过,一人选择终止则此任务终止,以其中第一个审核人员的审核结果为准)。
人工卡点任务创建成功后,当流水线执行到此类型的任务时,会默认通过邮件与站内信的方式告知审核人员。在测试与验收了对应的部署之后,审核人员便可将此任务审核通过,使得流水线继续执行。
查看持续交付流水线记录
CD流水线的每一次执行,都会产生一条执行记录,每条记录里还包含了所有阶段与任务的执行详情。
在“应用部署-部署”菜单页面,项目人员能在列表中查看到流水线部署记录的编号、对应的流水线名称、触发方式、执行者、运行时间以及运行结果;目前,运行结果存在以下几种情况:
运行结果 | 含义 |
---|---|
成功 | 流水线中所有任务执行成功 |
失败 | 流水线中有任务执行失败 |
执行中 | 流水线中有任务正在运行 |
待审核 | 流水线正停留在人工审核的节点,包括人工卡点与阶段间的人工审核 |
已终止 | 人工审核时,点击终止任务,最后流水线为已终止状态 |
已删除 | 原流水线已被删除,但是执行记录依然保存在此页面 |
在记录列表中,对不同状态的流水线部署可以执行相应的操作。对于执行失败的流水线,项目所有者可以重新执行流水线中的所有任务;若流水线状态为待审核,则需指定的审核人员审核后才能继续执行;而对于执行中状态的流程,项目所有者可以对其进行强制失败的操作。
点击某条记录的编号,便能查看到该条记录的详情,在此详情页面中,会展示出对应流水线的执行详情。其中包括了流水线的触发方式、触发人员、阶段详情以及任务详情。
总结
总的来说,持续交付是持续不断地将应用服务部署到交付流水线各种环境中的能力。而与持续交付相关的持续集成、持续部署、持续测试、持续反馈以及他们共同作用带来的持续改善,都是DevOps实践落地过程中不可或缺的一部分。
关于猪齿鱼
Choerodon 猪齿鱼作为开源多云应用敏捷全链路技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。
更加详细的内容,请参阅Release Notes和官网。
大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:
欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。
本篇文章出自 Choerodon猪齿鱼社区毛智伟。