什么是流水线?

流水线服务(CodeArts Pipeline)提供可视化、可编排的CI/CD持续交付软件生产线,帮助企业快速转型,实现DevOps持续交付高效自动化,缩短应用TTM(Time to Market)交付周期,提升研发效率。

流水线服务本质上是一个可视化的自动化任务调度平台,需要配合软件开发生产线中编译构建、代码检查、测试计划、部署等服务的自动化任务使用。根据用户需要的场景,如开发测试环境应用部署、生产环境应用部署等,对这些自动化任务进行自定义编排,一次配置后就可以一键自动化触发调度执行,避免频繁低效的手工操作。

流水线串联研发作业全流程沉淀华为研发数字化资产

华为公司在软件开发领域有30年以上的交付经验,从早期的无线基站、路由器,到后来的终端应用,再到云计算服务,持续交付和流水线作业系统也同样在做持续演进。

该演进过程大致可分成三个阶段:

第一个阶段为自动化,将软件交付的各道工序以流水线的方式统一定义,一次编排,可重复执行,降低流程因手工干预导致的质量风险,极大提高了软件开发效率。但是随着业务的发展,研发管理者面临新的问题:

如何保证开发人员的代码合入质量?

如何保证软件交付过程中的必经步骤都被正确执行?

如何保证变更过程中的质量?

如何将团队内的优秀经验和实践共享给其他团队?

如何保证所有团队的工程能力建设一致?

这就需要演进到后续阶段解决上面的问题。

第二阶段为标准化。标准化流程通常需要依靠人的管理,但是“人治”经验

以形成有效的知识资产被其他团队继承和使用,并且软件发布过程中时常会出现流程未被正确执行而导致的现网事故。

流水线承载了从代码开发到软件发布全过程研发数据,企业每年流水线作业系统上积累的数据,都是一笔关键的知识资产,要让这批资产有效利用起来,也就是以数字化的方式辅助企业进行研发治理。

第三阶段为规范化。华为通过多年的持续交付实践经验,总结出了一套行之有效的研发策略管理模型,以数字化的管理方式将要求内置在流水线中,规范流水线每个阶段的质量管理要求,也将软件交付从依靠人的治理转变为工具和流程的自动化治理,真正将企业的研发治理模型和流水线作业系统相结合,让开发者无感开发,流程天然合规。

流水线能力特性

流水线服务具有以下特性:

流水线任务的可视化增删改查。

基于帐号-角色-流水线操作的权限控制。

支持构建、代码检查、子流水线、仓库管理、部署、扩展类型、流水线控制(延时执行、人工审核)、接口测试等多种任务类型纳管调度。

支持自定义增删改查流水线阶段。

支持流水线阶段中纳管任务的串/并行执行配置。

支持设置流水线执行参数。

支持选定流水线部分任务执行。

支持查看流水线历史执行记录。

支持执行计划配置:包括持续集成、合并请求和定时执行三种自动触发执行策略。

支持流水线事件消息通知及邮件通知。

支持自定义插件以扩展流水线执行功能。

支持创建规则、策略以实现流水线质量门禁的统一管控。

说明:其中,自定义插件、规则和策略属于新版功能,新版服务正逐步分批开放。

什么是规则/策略?

新版流水线提供基于规则和策略的流水线阶段准出条件管理能力。用户可基于插件创建合适的规则,设置插件输出的阈值比较条件,并在策略中进行引用,最终配置到流水线准出条件中进行应用。策略是规则的集合,新版流水线服务支持租户/项目分层策略管理,助力高效项目管理,保障产品交付质量。

什么是扩展插件?

新版流水线内置了一系列常用的插件,供用户在流水线进行编排时使用。后续将陆续开放插件自定义能力,业务团队开发者可根据自己业务自定义开发流水线插件,以扩展流水线自动化调度能力覆盖的业务范围。

什么是微服务?

微服务是一种软件治理架构,一个大型的复杂软件项目,可以由一个或多个微服务组成,系统中各个微服务之间是松耦合的,各微服务并行独立开发、构建、验证及部署上线。微服务具备以下优点:

边界清晰:每一个微服务只关注一个特定的业务功能,开发和维护单个微服务都相对简单。

支持独立部署:单个微服务独立部署更新,不会对整个业务运行造成影响,保证业务7*24小时在线。

技术多样化:微服务可以使用不同的技术栈来实现,不同服务之间通过restful API通信,每个服务可以使用不同的技术框架和不同的存储库来实现。

什么是变更?

变更是一次研发交付活动的载体,项目的需求研发和漏洞修复都可以放在变更上来实现,一个变更只能属于一个微服务。

变更有自己的发布生命周期:开发中 > 待发布 > 发布中 > 已发布。微服务可以通过变更流水线发布一个或多个变更来实现项目的快速交付。同时,变更作为研发交付的载体,可以在变更上添加门禁、评审等流程来控制变更的质量。

如何登录流水线

操作步骤

1、登录软件开发生产线首页。

2、在顶部导航栏单击“服务 > 流水线”,进入流水线列表页面。

查看与当前用户相关的流水线任务列表。

说明:单击“新建流水线”旁的下拉框,可以根据“全部流水线”、“我新建的”及“最后一次记录由我执行的”进行过滤。

支持在搜索栏中输入流水线名称关键字进行搜索。

参数项
说明

名称

项目名称/流水线名称:流水线所属项目名称和流水线名称。

最近一次执行

展示最近一次流水线的执行信息:分支、最近一次代码提交的CommitID及描述等信息。

执行类型

展示最近一次流水线的执行方式和执行人等信息。

最近执行时间

展示最近一次执行记录开始的时间。

执行时长

展示最近一次执行记录持续的时长。

操作

单击操作列又三角按钮,可以执行流水线;单击三点按钮,可以编辑、复制、删除流水线;单击星号,可以关注流水线,关注成功后图标变为有背景星号,再次单击可取消关注。

工作流

展示流水线的调度流程及执行状态(已完成、失败、运行中、已停止等)。

流水线常见问题

流水线常见问题

  • 流水线可以运行哪些任务?

    流水线目前可以添加如下任务:

    构建

    代码检查

    部署

    测试

    通用(子流水线、创建仓库标签、Jenkins任务、人工审核、延时执行、挂起流水线)

    通过编译构建、代码检查、部署、测试任务可以进行第三方任务的调度;子流水线提供调用项目下其他流水线任务的功能;创建仓库标签可以为代码仓创建标签并推送进行版本管理;Jenkins任务提供对“Jenkins”实例上指定任务的调度执行功能;延时执行任务允许当前流水线等待自定义时间后再继续执行;人工审核任务可以指定人员审核通过才能继续执行流水线;挂起流水线即挂起当前流水线。

  • 流水线是否可以展示每条流水线的执行历史情况?

    可以。

    在流水线首页搜索目标流水线,单击流水线名称,即可进入流水线运行历史页面。

    单击右上角日历图标,可以根据需要选择时间段展示运行历史记录,支持查看最近31天运行历史记录,默认展示最近7天的运行历史记录,支持7天、14天、31天快捷切换。


  • 在微服务场景下,java项目如何按顺序部署多个模块的构建包?

    在微服务场景下,如果一个java项目里面有多个模块,一次打包会在多个模块打多个包,并且部署的时候需要将多个包按照顺序部署。参考:实现场景