【以下为分享实录,有删节】
背景诉求与推进策略
方案背景
一站式DevOps解决方案致力于顺畅高质量地交付有效价值:
顺畅指交付过程中不存在反复和阻碍,快速完成;高质量表示交付过程中产生曲线较少,交付后线上故障较少;有效价值指做出的需求真正是用户想要的。
当今世界是个节奏加速的世界,大鱼吃小鱼,快鱼吃慢鱼,每家公司都多少与软件业务相关联 ,软件交付和创新已经成为企业核心竞争力。随着业务发展和市场竞争的加剧,对软件研发效能的要求不断提高。同时但随着ioT和新零售等业务场景出线和相关协作复杂度的提升,研发效能反而有降低的趋势。
互联网时代下企业的DevOps诉求
互联网时代下,企业的DevOps诉求主要分为以下六个维度:
平台化与相应融合:每个公司都有很多平台,众多平台在企业内通常是封闭的孤岛,缺乏良好的信息沟通,公司有相应诉求来打造契合企业一站式的研发协作平台,打破孤岛 ,汇作信息互通。
研发模式多样化:研发模式指需求管理,其服务端比较适合持续精益发布模式,app端则比较适合迭代发布模式,多种研发模式并存是最优解。同时由于团队之间水平的参差不齐,也要对应提供多种模式,不能一刀切。企业的研发模式多样化并存和形成研发流程统一管控规范看似很矛盾,却是企业研发中的真实诉求。
质量防控和质量内建:产品交给研发的需求是否达到相应质量?开发交给测试的代码是否充分测试和理解?这时就存在一个质量内建的问题,为了避免garbage in,garbage out的尴尬局面,就要体系化建设代码质量,构筑自动化回归方面的质量体系建设。人工测试曾经是主流的模式,但现在随着自动化测试的发展,代码扫描检查做相应单元测试,回归接口测试等一系列自动化测试都可以进行相应的质量体系建设。
效率提升:建设研发基础平台,适配相应技术中台和进行一站式交付,利用环境管理和测试与发布的自动化都能一定程度满足相应的效率提升诉求,传统的手工模式已然过时。
数据度量:从需求代码发布,回滚,质量等一系列数据平台记录,到数据报表的展现,才能发现交付过程中问题出现在哪,从而基于数据进行改进。
研发资产沉淀:将个人能力沉淀为组织能力,需求上的沟通与协作,代码质量,测试资产,发布与构建的质量和相关线上故障等都是公司软件研发资产,进行需要沉淀。
Devops落地推进策略
这一策略主要分为四个维度阐述:
平台化:企业建设项目管理、研发、测试、发布一站式平台,各个孤岛打通进行相应协作,将所有数据沉淀到线上并基于数据持续改进。
标准化:做到需求变更规范标准化:例如准入准出需求。研发人员代码规范标准化:例如代码规约,定义方法等。编译打包规范标准化:要求一次相同代码在所有环境下打包一致,不能出现这次A包下次B包的问题。自动化部署流程规范标准化:如果没有相应红线质量规范,手工去做相应发布的触发很容易引发线上故障,产生事故。
自动化:DevOps推进过程中希望一切都由机器操作,从而展现自动化速度快的优势并降低出错率。自动化方面从编译打包自动化,代码扫描自动化,环境管理自动化,部署自动化和测试自动化五个维度实现DevOps落地。
可视化:可视化的目的是希望一切信息对所有人透明:例如研发效能,质量,自动化数据度量等。再按照可视化的数据进行相应改进。
云效与平台能力
云效平台介绍
云效是阿里巴巴的企业级一站式DevOps解决方案,源于阿里巴巴先进的管理理念和工程实践,致力于成为数字企业的研发效能引擎。云效提供从“需求->开发->测试->发布->运维->运营"端到端的协同服务和研发工具,支持公共云、专有云和混合云多种部署形态,通过人工智能、自动化技术的应用助力开发者提升研发效能,持续快速交付有效价值。可能有人会问一站式解决方案能不能只用其中的一部分,答案是肯定的,云效支持单独使用协作,code和发布的流水线等相关模块。
云效存在先进的管理理念,智能的技术应用,全方面的安全保障,高效的过程交付,高效的团队协作以及灵活开放的产品策略,众多方面我们将在下文中逐一进行后续介绍。
云效平台能力
云效具备六大模块构成平台能力:
前两个模块是项目协作,包括需求管理模块和质量管理模块。需求管理又分为精益模式和迭代模式,质量管理则体现在测试用例库的管理。针对每个版本发布测试计划,将测试用例拷入进行测试,对产生缺陷做缺陷跟踪,待版本迭代上线后做质量分析。
第三大模块是代码托管平台,主要进行代码托管,代码提交以及分支管理,研发人员提交代码后能够自动触发扫描,并在通过后进行代码评审和分支合并。
第四模块是流水线,开发写完代码触发流水线做版本构建 构建完做版本正式环境部署 流水线过程中会构建出相应包,该包触发第五个模块制品仓库,它同时支持公库与私库, 私库内具备二方包和构建出来的产物,并将产物存储到OSS上或镜像仓库内。
第六个模块是知识库管理,涵盖产生需求过程中的需求文档,研发做详细概要设计产生技术文档,会议讨论纪要,将这些记录用于改进总结和沉淀。
因此,云效是集成阿里巴巴最佳实践、一站式软件研发全生命周期管理的协作平台。
一站式DevOps解决方案与详细介绍
一站式DevOps解决方案
一站式DevOps解决方案分为六个步骤,从云效看板模式的需求管理开始,涵盖产品运营的需求反馈,产品经理的产品需求组织规划,并将基于交付协作的看板协作任务分配给研发,由研发人员接到需求后执行任务。
而后创建特性变更分支,完成代码并git push到远端仓库,进行代码的自动监听,扫描以及评审,并在完成后进入特性分支监听触发并形成触发流水线,将编译构建产物上传镜像仓库。
随后开发验证,SIT验证,预发验证,上线审核,以及生产发布等环境触发内容则交付Kubernetes做相应部署,并在接下来从镜像仓库拉取docker 推送到项目环境,SIT环境,预发环境和生产环境中,前三者面向测试人员,而生产环境则交付用户进行访问,并进行最终反馈,整个解决方案的体系中每一步都存在对应的反馈机制,从而能在出问题及时反馈以进行质量管理和缺陷管理。
云效的一站式DevOps解决方案存在一套1-1-1的理念目标:
研发从写代码到提交缩短到1小时发布前置时长;每天至少有1个可发布版本达成持续集成;每周至少能发布1次保证高持续发布频率。下面是模块实现详细介绍。
项目协同-看板模式
其一是端到端的价值交付过程,包含需求池,已选择,分析中,待发布和已发布五个环节,是从需求收集到需求发布的一个整体的端到端交付过程。过程中涉及的产品经理,开发,测试,运维人员等各个角色的前后职能都得以拉通,并将需求的进度展示在同一看板上。 并保证了需求中每个卡片都是用户价值驱动的,同一个需求可以拆分前后端,安卓与iOS等子功能,形成左右模块的对齐。
项目协同-迭代模式
有迭代需求后,例如一个两周更新一次的app,即可创造对应的迭代规划。例如图中的Sprint01.08-01.15是版本时间,36/39则是任务数,它们构成了整体的交付过程,并保证了迭代创建完成后能够规划迭代,同时执行者和状态都一目了然。
测试管理
测试用例部分是针对产品来说的,测试人员用「测试用例」管理沉淀用例内容,用例
可以被重复使用,减少测试人员重复工作量,提高企业测试用例编写规范。
测试计划则针对每个发布版本,与特定内容对应,例如功能测试和回归测试等,测试人员在具体项目内用「测试计划」做测试工作的执行过程管理,帮助测试人员对测试过程进行记录和协同,可以全面提升测试效率和软件交付质量。
发现缺陷后则进行缺陷管理,测试人员通过自定义的工作流来管理缺陷「提交
-修复-验证关闭」流程,强制流转规则保证信息的完整性;通过缺陷类型、严重程度、优先级、标签、等字段定义缺陷属性,进行细分管理,并分配给对应的开发人员进行修复。
通过测试管理的用例,计划,缺陷三个管理方向,能够串联测试人员的测试计划,提高相应测试效率和软件交付质量。
代码安全
代码安全的构筑分为三层,最底层的数据安全,指代码存储在code平台的数据具备足够的安全性,做到自动快照和分布式存储,并置于最高等级机房内,保证数据传输的安全与加密,并由阿里安全位攻击防范措施保驾护航。
中层是人员安全,这里的人员主要是指云效工作人员,做到服务器权限严格管控和全操作留痕,同时采用自动化更新减少人工操作量,并定期审计确保及时发现问题。
上层分为两个维度,即企业行为安全和企业代码安全, 这两个维度又可细化成事前,事中,事后三个方向。
事前防控包括IP白名单访问:非IP无法访问和进行代码处理;企业级,git组和git库的三级权限控制;离职人员权限的清理。
事中预警包括代码扫描敏感信息:代码中是否有数据库密码关键key;敏感行为的监测 :是否存在频繁下载代码等; 高风险通知:例如删库,公开库等操作能即时让负责人知情。
事后追溯则主要是形成可参照信息记录,供审计和追溯,包括库管理日志,代码行为日志,和管理员设置日志,从而保证代码放在平台上的安全性。
代码通用协作方案
研发人员和代码打交道,主要对象是远程仓库代码,接到研发任务后即可创建特性分支,再在远端 clonepull到本地完成代码,并在本地提交后再 push远端,每次push都会自动触发代码扫描,扫描通过后才能通过合并请求和触发代码评审,并在过后再自动合并到代码master分支。
代码评审分三个维度:轻CR:只要提交和并请求通过即可,没有评审过程; 重CR:为保证任务质量需要人员介入,由团队资深同学评审;自动化辅助CR:用于提高效率,只要代码扫描没有问题就自动合并代码。
流水线方案
流水线分为持续集成和持续发布两个部分。持续集成是由开发者提交代码,或合并其开发分支到集成分支,触发发布流水线的运行。软件自动完成代码扫描、软件构建、部
著到测试环境,完成集成测试。如果成功完成验证,自动合并到待发布分支。目标是每天至少存在一个待发布版本。
持续发布则是软件达到可发布状态后,通知发布负责人,发布到生产环境。同时准备回滚预案。最终可发布版本的发布部署由发布窗口及人工审核来决定。目标是一周至少一次。整个流水线方案过程中都可以用钉钉消息进行沟通,并反馈发布结果给研发人员。
ECS部署
前面和通用步骤一致,区别在于编译和构建。编译出的部署包存储在包服务器上,测试部署时触发脚本进行部署,从服务器getpull包,到机器上触发Agen进行部署。部署策略分为分批首批暂停,分批每批暂停和分批不暂停三种,还支持快速回滚。生产发现问题并非在线上定位和修复,而是直接快速回滚,在线下验证和进行日志分析,不影响线上业务,整体部署环境支持阿里,自建IDC和其他云,硬件上支持ECS物理机神龙等各种形式的机器,并可以划分出项目,SIT,预发和生产四大环境。
K8S部署
前面也与通用步骤一致,区别只是编译出构建的产物是镜像,并将其追踪到镜像仓库。部署的时候会触发kubernetes,从镜像仓库中拉取docker再部署到生产环境中。部署策略支持滚动升级,蓝色部署,分批第一批暂停和分批每批暂停四种。机器上支持阿里云K8S和原生自建K8s,环境类似都是项目,SIT,预发和生产四个,只是区分于部署的内容非包,而是镜像。
反馈改进机制
反馈机制分为日常质量和交付效能反馈三个方面:日常反馈主要基于看板是否顺畅,构成时是是否有阻碍与反复。质量反馈旨在反馈故障和缺陷的多少和故障修复是否及时。 交付效能反馈主要分为研发效能,开发需求交付等几种维度。
基于这些反馈定期进行的分析可以从迭代或者月度review会议的形式着手,并在分析后制定改进action,从易到难落实流程操作改进,基础设施改进,代码设计改进,交付和测试守护改进以及人员技能的改进,来保证改进行动的可持续性。每次改进的action不宜设置太多,防止落地效果变差,同时,宜将每个action都落实到个人保证产生效果,从而形成持续的反馈,分析,改进的PDC循环。
云效DevOps培训
针对人员技能理念,阿里云有对应的培训和解决方案包,帮助企业不仅在工具层面建好DevOps,同时能做到持续改进过程中,利用最佳实践和解决方案辅助提升研发效能。这套培训共有两大系列,八大课程,七种方案的解决方案包,可以联系相关负责人进行咨询。
三大案例分析
案例1:星汉博纳
在星汉博纳上,云效实现了一套持续的改进过程,做到了过程有追溯,资产有沉淀,改进有依据,使得原本散落的各个企业平台能在端到端中实现打通。
首先是需求收集和产品管理,由运营人员收集需求池进行任务排期和项目管理,并使需求透明化,让提需求的人能看到进展,研发和测试人员能看到排期,需求排期后转入团队交付看板进行迭代,版本与缺陷方面的管理,再交由开发人员做产品的代码编码和测试用例实现,并接下来将代码提交进代码库,做code review和测试管理。
图像中曾经只作为规划功能的两条虚线:代码commit关联工作项与缺陷,发现状态自动同步工作项和缺陷目前都已经全部实现,代码通过后继承触发应用集成发布的流水线。测试服务方面支持测试用例管理和根据用例计划缺陷自动化接入SaaS服务,环境上也做了日常环境,预发环境和生产环境的划分。
通过云效一站式解决方案,星汉博纳成功实现了追溯过程,沉淀资产和按需改进的目标。
案例2杭州幻熊
杭州幻熊案例核心的功能实现在于流程图右上角的方框:达到每日的持续交付,将单应用发布时间从半小时缩窄到两分钟,将整个产品的发布时间从10小时缩窄到二十分钟。这其中云效系统从代码平台,流水线和环境管理三个方向切入。
代码平台方面,开发人员先push代码到特性分支,并自发触发代码扫描,通过后进行MR,代码评审与合并,并集成分支。
流水线分则为持续集成与持续发布两条。集成分支后,自动触发监听进入持续集成流水线,包括编译构建,测试部署,测试验证,验证通过,并最终代码合并到发布分支,此时需要核心研发人员或运维人员触发部署持续发布流水线:共有编译构建,预发部署,预发验证,验证通过,发布审核,生产部署六个步骤,并最后通过钉钉反馈,从而在测试预发和生产三个环境都实现规范化和自动化。
案例3商米科技
这个案例中,被替代的方案分为需求流和代码流,需求流的迭代模式存在时间盒,迭代计划批量进出,整个过程位于黑盒,只有实际测试发布后才能发现问题,导致发布经常延期,不仅质量不高还需要大量人员的加班加点。
代码流则受限于环境准备,本地开发从master拉取分支写代码会显著延长调试时间,每天只能进行两次push到特性分支,同时人工触发联调。每个版本都要等环境,手工维护拉取分支编译触发修改脚本要一天以上,再去做相应的预发布还需要1-3天测试,提测后合并发布要两周一次,特别冗长。
而如今,在云效进行DevOps改进后,商米提出了1-1-1的三个愿景目标:每个组每周至少发布一次,每天都有可发布的build,每次发布前置时长1小时。
由目标作牵引,云效将新方案分为需求价值流和代码变更流。需求价值流一改原本迭代时间盒在批量迭代需求多过程不透明的缺点,将迭代过程改进为单个需求价值的流动,实现开发就绪→开发中→ 测试中→ 待发布→已发布全部环节的可视化。任何需求有问题都会即刻暴露,并可以在当前版本不做发布,只发布达到版本的需求。
代码流同样进行了很多改进:从本地开发到get push自动触发,研发人员写完功能就可以即时进行push,不再受限于一天两次。而后自动触发相应的代码扫描,这些扫描支持增量,速度很快,通过后开发人员可以在五到十分钟实现code review,再由开发者进行变更验证,随后的自动化环境部署可以在两到五分钟内完成。
同时,云效还增加了自动化测试的步骤,测试通过后会自动触发SIT环境,即测试人员需要测试的环境,自动化UI测试以及手工测试接续在一起能够在一小时左右完成,并随即触发UAT预发验证,由运维审合发布到线上,从而实现1-1-1的愿景目标。
手把手带你完成一个项目
本文整理自阿里巴巴云效研发高级解决方案工程师圻心对实践性搭建DevOps平台快速提升研发效能的精彩分享;
由阿里云开发者社区志愿者徐海轩整理。
现在开始开始介绍产品的实操演示,图中页面就是云效2020新版产品页面,重点介绍代码平台,项目管理以及流水线。
利用左边dock登录个人工作台,打开左上角可以看到产品,包括知识库,文档托管平台,流水线,代码管理,制品仓库,测试管理(管理测试计划和测试用例),工作台(可以理解为项目管理平台),企业成员和企业管理后台是企业成员级的设置。
项目管理内容简单介绍
刚开始第一步新建项目:右上角点击加号进入项目菜单,能看到这里提供了多种项目模板。产品研发类企业选择研发分组,这里有很多模板,包括DevOps研发工作流,敏捷迭代研发工作流,需求管理工作流。缺陷管理工作流,假设你只需要存放缺陷的话就可以选择缺陷管理模板,以此类推。
介绍一下DevOps模板,选择后即可提供一站式端到端的场景,你可以针对需求界面创建分支 分支提交可以自动关联流水线,都可以在需求空间下看到完成这样的场景
重点介绍敏捷开发场景 点击进入一个敏捷开发项目空间 可以看到需求任务迭代等目录选项 首先从日常工作开始,首先会基于一项需求开始生命的一个开端,提前做了一些demo数据,以笔记应用作为需求,左上角可以看到针对笔记应用的需求分类,例如笔记本,笔记操作,权限,模板等。
有日常需求即可按加号新建,在需求界面里可以设置需求的起止时间,关联迭代,分类和标签等等,如果需要做一些产品PRD等输入或管理一些文档,可以通过关联内容的方式添加进来。
接下来看需求池页面,此时已经有大量需求,接下来针对池内的需求,围绕着业务目标或需求优先级做迭代规划.
此时右上方点击前往【迭代】规划需求按钮,可以看到提前建了一个Sprint002的需求迭代,并已经关联了一部分需求在内,此时即可进行需求迭代开发工作。
如果第一次去新规划迭代,则可以在迭代窗口右上角点击加号,以创建新迭代,可以自建名称,选择交付时间和负责人 刚创建好的页面是空的,此时点击规划迭代即可开始规划。
此时可以看见左右各存在一个框区,左侧是需求池中未规划的任务,可以快速将这次需要纳入迭代的需求加入到本期的迭代版本中,这样就可以快速的创建新的迭代版本,如果基于新的迭代版本已经规划好了,需求已经录入了,接下来就可以做一些具体研发任务的拆分。
比如笔记支持移动到不同的笔记本,打开需求即可围绕需求指派不同的子任务,例如Android Web 和iOS端的开发,就可以将这些任务分配给开发人员,进入任务开发实现的阶段。
至此,实现了从需求池开始的需求规划到纳入迭代管理这部分的过程,如果进入到开发的任务交互过程中,那么开发任务完成后下一部就要开始提测了。
接下来介绍测试方面的内容
点开dock能看到测试管理模块,主要是管理用例库的,点击右上角即可创建笔记任务的用例库空间,可以编写测试用例,定义不同场景分组进行规划,因为这是企业级的用例,所以进行管理后可以直接在相关项目中对这些用例库进行调用。
接下来回归项目空间,很容易看到上方有一个测试计划,点击测试计划服务页面,首先,围绕sprint002这样一个迭代版本,可以看到左侧分好组的不同测试用例,可以基于分组创建用例,也可以根据之前做好的用例库规划用例。
创建用例后,紧接着就是对用例进行相关评审,可以在评审中对用例进行确认,已通过即可选择已通过状态,未达成一致则可以调成未通过等待后续优化,在日常的开发提交到测试环节,测试验收过程中,可能会围绕用例发现一些问题,比如存在未通过的用例,此时就可以点击右上角提交缺陷来统一评审和进行状态修改,包括修改用例等级等
说完了测试用例和测试计划,缺陷服务也是测试过程中很常用的一个模块。
这里可以针对缺陷进行分类,比如围绕需求的不同进行分组,便于直观的进行查看。
还有一些其它的服务能力,例如日程能力,这里可以添加一些项目的周会或其他会议。设置日程时间,进行提前提醒,创建好的日程会被划入日历
在日历中即可清晰的查看个人的工作日程和会议安排等内容。
然后是统计能力,这里主要围绕着一些度量数据做解读和分析。
统计右上角有新建项目报表的功能,它支持多种报表模式,例如你比较关心一些效能分析方面的指标,就可以启动交付周期报表,需求控制图或者需求累计流图
缺陷统计中,同样可以根据场景和诉求新建各种报表,例如缺陷的变化趋势,累计趋势以及缺陷按迭代分布等,便于去分析问题和进行下一阶段的计划改进。
结束统计方面,接下来看后边的知识库:
知识库是一个文档管理的平台,能够进行对外发布,即企业外部成员可以通过外部访问地址快速查看信息,如果项目涉及和其他方的合作,就可以通过知识库的方式传递和共享内容。
在知识库中可以管理产品需求,会议纪要等日常文档和企业知识沉淀。
代码管理详述
这里就是代码管理平台的页面,对代码管理的介绍分两部分,一个是企业级代码平台设置,另一个是用户级的代码平台设置内容。我们第一时间即可感受到平台的安全性,这一安全性在事前防范,事中应对和事后追溯方面都有相应的体现。
首先来看企业级的代码设置内容,首先是通用功能,可以设置创建代码库的权限,
哪些人或角色可以创建代码库或代码组,决定代码库是否公开。
安全层面可以进行IP白名单的设置,例如设置在某一IP网段内才允许进行代码库访问,令非IP白名单内地址无法进行克隆,下载,提交,合并等常规代码操作。
安全层面的第二部分是安全通知,对代码库的所有操作都是留痕的,比如公开原本私有的代码库,删库等等,这些过程都可以根据需求选择进行站内或邮箱通知。安全通知记录可以用右上角的导出键导出,一次最多一万条,方便企业用于分析和排查。
回到代码管理首页,还有一个重点内容是审计日志。
第一个是库管理日志,这个日志中可以看到基于库曾经进行的操作,例如添加或删除成员,目录操作,以及成员权限的更新都能一览无余。
代码行为日志可以看到克隆行为历史,比如发现有人在某段时间内大量克隆很多和业务不相关的代码,就应当重点关注这一个体。从而起到事前预警和通知的作用。
类似的还有组管理日志和企业管理日志,所有的日志都可以用于安全审计并支持导出。
代码库简述
这里是几个创建好的Demo代码示例,进入一个例子。
首先介绍设置菜单内的一些能力,点击右上角设置,点选集成与服务进入集成服务界面,这里介绍和代码质量高度相关的能力,例如Java开发规约和敏感信息监测等,这一部分企业可以根据自身需求决定开启或关闭。
很多企业都非常关注质量话题,它是效能提升的重要保障,通常情况下,代码质量更受测试人员关注,但研发过程中提前重视这一过程将非常有利于软件交付质量的提升。这时就可以前置部分检查,例如开启java规范扫描或敏感信息检测等,对此可以设定一些触发方式,如代码提交触发和合并请求触发,作为提交的卡点要求。
接下来介绍分支设置,分支设置中主要想介绍代码评审能力,主要是用新建保护分支的方式进行归纳,例如可以新建master保护分支,并调节推送规则,规定那种角色的人员在完成怎样的动作后才能push到分支上,达到提交的标准。
例如可以开启合并前的代码评审,这里通常不允许创建者通过。评审支持普通模式和CodeOwner模式,普通模式中可以设置评审通过的最少人数和默认的评审人员。下方是可供选择的合并前卡点要求,例如必须经过Java预约扫描或敏感信息检测。
接下来用实例演示开发从拉取分支到代码和并请求的场景,首先进入分支界面,从master进行拉取新建一个分支并确定。
快速基于此分支提交文件后,能够看到刚刚创建的分支正在运行,进行Java开发规约以及敏感信息的扫描,点击即可看到详细的扫描内容,扫描多少文件,是否出现问题。这一步可以用来进行问题分析,确认无误后即可进行合并请求的新建。
进入合并请求界面,可以看见设置的刚刚的卡点要求需要通过,对应着正在进行的自动化检查和代码的人工评审。此时可在界面右侧添加评审人,此时相关评审人就会收到通知,并可以对评审进行通过。
审核通过后,即可点击右上角合并选项进行提交,完成整个合并过程。
流水线的能力
进入流水线flow页面后,就能看到产品流水线的工作台,默认定位在个人参与的流水线中,并可以修改定位至全部流水线,这里可以进行一些个人权限的控制,例如谁仅能查看流水线,谁可以进行编辑。
这里介绍一个主机部署的场景,这是一个持续集成的流水线,分为测试,构建,环境部署,测试验证,在通过后合并到发布分支,并转进持续发布的流水线。
持续发布流水线主要作用于生产环境,从构建上传开始,到预发环境部署,预发环境验证,验证通过后进入发布审核和正式环境的部署。考虑到快速创建流水线标准版本的需求,可以在右上菜单中将场景快速保存流水线模板。
为了处理发布完成后线上出现问题的情况,平台也提供了一些快速回滚的能力,点击右上角回滚,它会定位到部署的所有历史版本中,点击某一所需版本即可进行相应回滚,从而回到从前的稳定的版本。
最后快速演示一下新建流水线的过程,回到流水线主界面,点击右上角新建流水线,这里可以看到许多设置好的模板,初次使用时可以在左侧根据开发语言进行选择,例如根据Java主机部署场景快速创建。
流水线的出发源可以是业界所有的主流代码仓库,例如Codeup,Github等,也可以绑定Jenkins账号进行任务对接。
添加流水线源时可以开启代码源的触发机制,做到提交代码,创建tag或完成合并请求后立即触发流水线,保存即可看到初步搭建好的流水线场景。
流水线支持并行任务,如果需要多任务在流水线同一环节并行完成,可以选择并行任务,左侧有丰富的阶段任务组可供添加,例如加入一些安全类的扫描或静态扫描。
打开流水线的部署阶段,这是一个主机部署的例子,所以要首先选择制品作为构建完成的产物,主机组就是关联不同环境的机器资源,首次配置需要新建,支持的主机类型有阿里云的ECS和非阿里云的公网自有主机。
这里可以根据应用环境的不同进行主机组的划分,例如测试环境和日常环境下。后续会加入一个轻应用的概念,通过应用的不同进行主机资源和环境的管理。
主机组选择后即可进行其它配置,例如部署脚本的输入,暂停方式的选择,是每批暂停或者仅首批暂停,可以根据企业要求灵活进行配置。
同时支持钉钉插件功能,拷贝好webhook地址即可接入钉钉机器人通知,在流水线构建成功,失败或取消构建时可以即刻分享到钉钉群内进行通知,便于快速排查定位或解决问题。
整个流水线全部编辑完成后,点击保存并运行即可进入直观可视化的运行页面,首次可能会有一个较长的运行过程,后续速度会明显加快。