关注嘉为科技,获取运维新知数据库
前面一篇文章《蓝鲸DevOps深度解析系列(1):蓝盾平台总览》,咱们总览了蓝鲸DevOps平台的背景、应用场景、特色和能力;安全
接下来咱们继续解析蓝盾平台的核心组件——流水线引擎。本文介绍的是蓝盾流水线的用户体验,为了让你们有更直观的感觉,因此图片较多,请谅解。架构
传统的瀑布式软件开发模型在需求明确、业务稳定的项目中,有着明显的优点;而面对需求频繁变化的项目、持续迭代的互联网产品,敏捷开发方法正好适合。运维
DevOps则帮助开发、测试和运维团队共同建立了一个强大的、可预测的软件交付方式。工具
DevOps强调“将软件建设的全部环节进行自动化&全面监控”,也就是使用正确的持续集成(CI)和持续交付(CD)工具集,把持续交付的过程变得自动化,更快速、可靠;而且将过程数据进行尽量完整的数据采集和分析,用于持续的精益改进。性能
实现这一切的核心是实现高效交付的自动化流水线。根据《2018全球DevOps现状调查报告》,基于 DevOps 改进了软件交付效能的精英组织相比低效组织来讲,吞吐量和可靠性的提高,流水线居功至伟。单元测试
在腾讯互动娱乐事业部(IEG),庞大的持续部署和持续集成、持续运营的需求,驱动着流水线也经历了两条不一样主线的发展:学习
1) CD/CO流:从自动化应用部署和发布工具,到通用的运维平台支撑部署和运营做业流水线测试
时至今日,腾讯IEG运营的六百多款产品使用的语言、技术架构、数据库、运行环境差别化仍然很是大。面对每一个产品的部署发布、运营做业的编排和执行须要,摆在面前有两条路能够选择:优化
● 为每一个产品的部署发布、运营场景定制开发特定的工具,一个个工具变成一个个烟囱,开发团队须要面对不一样的需求疲于奔命;
● 创建技术运营的体系,将平台的建设和运营场景的建设分开,平台建设团队不断的丰富平台能力,产品运营团队基于平台以组装的方式来实现部署发布和运营场景。
若是咱们为数百款产品开发数百个部署、运营工具平台,那么数百款产品的运维、运营工具的开发,会致使巨大的成本、稳定性问题。
显然,创建技术运营体系这条路是不得不走的路,这个平台也就是诞生于IEG的蓝鲸平台。蓝鲸平台的介绍文章颇多,在此不作详细的介绍。
2) DevOps流:从基于Jenkins的持续集成流水线,到自研的强大流水线引擎
不管是在初创公司仍是大型企业,在须要持续交付的项目/产品研发中引入DevOps均可以减小人为错误的发生。
该模型容许研发维持质量,同时加快端到端快速交付流程。在DevOps体系中,流水线结合研发效能工具能够帮助企业建立本身的快速交付管道。
DevOps落地过程当中,最关键的、同时挑战最大的是构建自动化持续交付流水线。
自动化持续交付流水线涉及到代码拉取、代码静态分析、编译构建、单元测试、制品归档、自动化测试、安全扫描、压力测试、部署测试环境、部署预发布环境、发布等等环节的串联和自动化执行。
建设企业级的统一DevOps平台,开源的Jenkins 流水线在性能、可扩展性、稳定性、安全性、用户体验方面都存在明显的不足,踩过了若干坑以后腾讯IEG不得不从新设计了流水线引擎,并且它必需要比Jenkins更为强大,才能有存在的价值。
若是流水线引擎不能带来良好的用户体验,不能适应各类场景下的流水线灵活编排,那么它和执行脚本有什么区别?
在用户体验方面,蓝盾的流水线能够说作到了极致,本文就从用户体验着手,来初步解析蓝盾流水线:
1) 轻松简单的流水线编排
蓝盾流水线让用户不须要学习Jenkins的Pipeline语法,也不须要过于关注和工具平台如何对接。
图形界面的可视化的流水线设计,灵活组装各类原子,配置化原子设置,下降了使用难度,也减小了脚本难以调试、容易出错的问题。更不会出现人员更迭致使没法维护的问题。
下面的流水线示例,各一个纵列是一个阶(Stage),每一个块是一个任务原子(Task),近百种原子模板能够根据业务的需求,灵活组装出各类流水线,对接各类工具实现CI/CD环节的各类功能和流程。
咱们能够从空白模板开始建立流水线,也能够从流水线模板库中的模板来创建流水线。模板能够预先设置好流水线的阶段、构建环境、原子类型等,下降流水线编排的难度。模板能够由用户本身来建立。
流水线能够把任务分为多个阶段(Stage),每一个阶段(Stage)下面,还能够有多个并行的做业(Job),每一个做业均可以指定不一样的构建环境,咱们能够在构建阶段并行进行不一样的构建环境下的程序的构建,例如:后台服务、Web端、移动端。每一个做业下面,还能够有多个串行执行的任务原子(Task)。
每一个任务原子都是能够配置的,每一个原子模板都有特定的功能,咱们能够选择任何一种原子类型下面的原子模板。蓝盾内置了近百种原子模板供咱们选择和组装,若是没有知足的原子,也容许用户本身扩展开发。
例如,咱们选择了拉取GitLab仓库代码原子模板,咱们就能够直接在图形界面进行原子的参数化配置GitLab代码仓库的信息,流水线执行到该原子时,就会根据配置自动的从指定代码仓库拉取指定版本的代码。
若是咱们选择了代码检查任务模板,咱们就能够配置代码检查执行任务中的语言和代码检查工具;流水线执行到该原子时,就会启动代码检查平台按照指定的设置开展代码扫描了。
2) 直观清晰的流水线跟踪
流水线被执行以后,咱们须要了解流水线的执行状况,例如:成功与否、耗时、日志;咱们还须要拿到流水线执行的产出物(即制品包)、报告(代码检查报告、单元测试报告)。过往这些信息每每是散落在不一样的工具平台中的,给咱们的实际工做带来不少没必要要的困扰。
上图中,流水线的每次执行的结果,均可以在执行历史中被展现出来。包括:启动时间、构建序号、耗时、版本号、触发方式和执行人等。若是须要看更加详细的信息,咱们能够点击其中一次记录,就能够看到该次执行的具体信息。
若是有异常,流水线会自动中止和发送通知,在执行结果界面清晰的标识出哪一个原子出现了异常。
若是须要进行更进一步的了解原子的执行状况,在执行结果中点击任何一个原子,咱们能够深刻查看和分析该原子更细节的日志,例如:
在“查看构件”标签页,咱们能够直观看到本次流水线执行生成的制品包,若是有须要能够直接下载到本地或者查看元数据,而不是须要到切换到制品仓库软件中去查找。
在“代码变动记录”页,咱们直接能够查看到本次流水线的执行涉及的代码变动版本号范围以及具体的Commit信息,能够用于追踪产出的新的版本,涉及了哪些需求或变动、缺陷的修复。
在“产出物报告”标签页中,集中展现流水线中各个环节产生的报告,例以下面的代码检查原子产生的代码检查报告。
以及在单元测试环境产出的单元测试报告。
3) 流水线的设置
在流水线的设置中,咱们能够配置流水线的运行锁定、通知设置、权限设置等。例如:能够设置流水线在同一时间能够运行一个或多个实例。
流水线在构建成功或失败时,对哪些人进行某种方式的通知。
从上述信息能够看到,蓝盾流水线的用户体验能够说超越了全部的其余流水线工具,这种用户体验带来的不仅是界面好看自己,而是蓝盾产品团队对DevOps的更多考虑:
● 蓝盾做为企业级的DevOps平台,咱们但愿的是靠平台的强大、极致的用户体验吸引各个研发团队将研发流程迁移到平台上,而不是经过行政命令要求各个团队必须使用蓝盾DevOps平台;行政命令则可能会带来用户反弹和博弈,而蓝盾是一个能“润物细无声”的帮助企业把DevOps研发标准、规范体系推广到全企业的研发效能平台;
● 用户体验毫不只是“界面好看”四个字所能归纳的,极致的用户体验是创建在对市场竞品的调研和分析,对庞大的DevOps团队用户进行调研和分析,对平台的不断优化和打磨,对蓝盾工具链的各个工具进行深度打通等等的基础之上;平台的功能、稳定性、扩展性等必须作到极致,才是用户体验能达到极致的前提;
● 用户体验不该只是带来用户的方便,直接或者间接带来的更可能是:学习成本的下降、研发效能的提高、交付频率更高、交付时间更短,因为流水线编排出错致使的部署失败、运行事故下降到极低,因为人员变更带来的影响更小;IT团队在DevOps项目中的参与度更高、团队更加稳定,能够有更多的精力放在业务层面的运营和优化中。
未完待续,敬请期待……