乐趣区

关于前端:大咖风采-中国出口信用保险公司的-DevOps-落地之道


在本文中,峰会大咖黄金泽 将从工具链逐渐铺开的角度,讲述中国进口信用保险公司 IT 团队在交付方面如何从“刀耕火种”倒退到 DevOps 落地的疾速转型。

点击【这里】理解峰会详情
对于作者:

黄金泽,香港浸会大学计算机专业硕士研究生,中国进口信用保险公司信息技术部 DevOps 高级项目经理,2013 年起负责公司业务零碎 DevOps 流水线产品的铺设和搭建、DevOps 理念的推广。率领公司研发团队将部署流程从手工到全自动化第一人。期间深度应用 Atlassian 家族产品,包含 JIRA Software,Confluence,Bitbucket,Fisheye/Crucible,Bamboo 等,咱们的 DevOps 倒退之旅与 Atlassian 产品的应用密不可分。

中国进口信用保险公司 DevOps 的倒退历程

中国进口信用保险公司是我国惟一政策性进口信用保险公司,中国信保通过为对外贸易和对外投资单干提供保险等服务,促成对外经济贸易倒退。

现阶段公司面临由大到强的整体转型,总部及分支机构迫切需要 IT 团队提供科技赋能,以用户为核心,实现科技引领的指标。因而 IT 团队面临很大挑战,传统的 IT 模式向 DevOps 转型也成为必然趋势。

我的项目背景:在企业 IT 部门转型 DevOps 工作之初,IT 团队生产力工具匮乏,仅有的 SVN 和 QC 工具曾经无奈持续与日益增长的需要相匹配,同时,开发、运维间隙越来越大,相干技术积攒单薄、新旧文化冲突突显,转型困难重重。

什么是 CI/CD 交付通道?

Continuous Integration,继续集成包含:源代码变更、自动检测、拉取、构建、单元测试、自动化测试等。

Continuous Delivery,继续交付包含:源代码变更、自动检测、拉取、构建、单元测试、自动化测试、生产交付等

在泛滥 CI/CD 交付链介绍中,从 CI 到 CD 的区别只是最初是否将代码交付到生产环境。从实践上讲,在 CI/CD 交付链全副工具和技术就位并运行后,是否交付到生产仿佛并不是很艰难的问题。但在我的项目落地过程中,咱们发现还是“Too Young To Naive(很傻很天真)”!

那么影响从 CI 到 CD 的到底是什么呢?我总结了以下 4 点:

  1.   当工具链反对提交代码主动触发编译,意味着开发团队每次提交的代码都是“Build Success”的版本,而不能再像过来那样仅仅是“我明天工作干完了帮我保留一下进度”;
  2.   自动化测试团队须要更全面地对测试场景进行笼罩,意味着对自动化测试的进一步依赖和自动化测试团队重要性的大幅降级;
  3.   团队麻利水平更高则考验着团队文化的新旧碰撞,一个团队可能从过来的大瀑布流程里走进去承受 DevOps 文化中高频构建,小步快跑的思维在事实落地的过程中并不容易;
  4.   最初就是团队的信念,改革者要率领团队大部分甚至全副成员承受麻利文化以及在 DevOps 工具链上进行交付,这突破了惯例交付伎俩,对交付工具间稳固配合工作的要求极具挑战。

如何在中国信保落地 DevOps?

接下来就让咱们看看咱们是如何一步步通过 Atlassian 的全系列工具落地 DevOps 工具链的。

过来,IT 团队开发与运维的交付根本靠手工搬运文件模式进行,这种交付形式不仅效率低下,甚至经常出现人工失误,更重大的状况是,交付时很难预知交付后的各种情况,大版本的交付在劫难逃。

IT 团队在代码治理方面也没有无效的版本管理机制,仅有的 SVN 只是作为备份和保留的根据。

初步改革产生在 Git 服务器搭建之后,团队陆续承受了从 SVN 向 Git 的转变,在 Git 的推广中浸透了版本与分支的治理理念,从此为后续 DevOps 转型奠定根底。其中 SVN 向 Git 迁徙的同时咱们对源码库进行了进一步的拆分,以更好地适应分支的治理和后续微服务的推广。咱们平滑迁徙了全副提交历史和用户映射,应用了 SVN Mirror for Bitbucket Server 工具。

后续,咱们将 Git 与 Jira Software 进行集成,实现了将代码与开发工作的关联。

咱们还同时考查和比照了 Bamboo vs. Jenkins,Bitbucket vs. GitHub,但思考到与 Jira 和 Confluence 的集成劣势,咱们抉择了 Atlassian 的全套工具以及插件作为公司下一代倒退的平台,前面的实际也证实了选对工具和插件对人力资源的节约是如许微小!

下图是咱们当初的 DevOps 所应用到的产品和平台,接下来就让咱们一起来看看咱们是如何一步步实现 DevOps 全流程的过程。

依据业务场景灵便抉择插件:

咱们依据本人的业务需要选购了很多 Atlassian Marketplace 里的插件来实现需求,而不是自觉的进行二次开发,Marketplace 里的插件品种十分多,能够实现咱们的绝大部分需要。这里,我也把咱们用的比拟好的插件举荐给大家:

  • Big Picture 插件:咱们用来实现我的项目进度甘特图治理,要害我的项目节点数据通过绘制甘特图进行展现;

  • Structure:从项目管理角度,咱们将我的项目划分为三级我的项目,按照我的项目 - 需要 - 开发工作进行治理,不同我的项目之间通过不同的工作类型以及它们之间的逻辑关系(Jira Links)进行关联,并通过应用 Structure 插件进行分级,分级后,1 个我的项目对应多个需要,1 个需要对应多个开发工作,以上三级工作在 JIRA 中并行流转,但在逻辑上存在这上上层关系。开发工作与缺点之间通过 Sub-Task 模式硬关联,造成了具备团队应用特色的多级项目管理模型;

  • ScriptRunner:从工作流角度,咱们应用 Adaptavist ScriptRunner 工具在工作流流转中进行权限分隔、工作主动调配、自动记录工夫节点和触发各类事务性能;

  • eazyBI  统计报表:从数据统计角度,咱们通过应用 eazyBI Reports 工具将 Jira 数据从后盾导入,加工出各类我的项目和开发角度的统计数据,并定期在办公公共区域展现

  • ScriptField:从字段角度,咱们通过应用 ScriptField 工具主动统计加班、早退、我的项目人天等数据;

  • synapseRT 测试工具:从测试角度,咱们应用了 synapseRT 工具治理各类测试用例,将测试菜单项预录入工具中,测试人员根据测试用例按步骤执行测试操作和查看预期后果;

  • Automation Lite:从自动化工作角度,咱们应用 Automation Lite 工具制作了十分多的自动化审批和事项跟踪性能,如通过联合 JIRA 收邮件事务,在特定工作流节点,触发当经办人为审批人的工作状况下,接管到审批人送给 Jira 的邮件和审批关键字,就主动审批该流程,实现了与邮件工作机制的平滑对接。


应用 Bitbucket + Bamboo 打造 DevOps 外围

紧接着,咱们引入了 Atlassian 的 Bitbucket 产品,用来对 Git 分支进行治理。
在 Bitbucket 的性能扩大上,咱们也抉择了两款很好用的插

  • Smarter Search:对全局代码进行搜寻,联合其余代码扫描类工具和 api 接口为开发人员 360°查找代码提供了可能,堪称事倍功半;
  • Awesome Graphs:对代码的分支治理更精细化,分支间的关系和代码提交记录和盘托出。



同时,咱们还购买了 Fisheye,开发团队在线实现 Code Review. 代码审核和提交回溯有据。


在开发相干的根底工具逐渐实现后,咱们深刻运维方向,引入了继续集成工具 Bamboo。
Bamboo 是 Atlassian 家族成员中做 DevOps 的外围工具,在产品选型时曾比照过 Jenkins 和 Bamboo,但思考到与 Jira Software 和 Bitbucket 的集成劣势,首选了 Bamboo 作为下一代倒退的工具,Atlassian 产品之间的无缝链接和集成,以及企业级的利用和反对,也为咱们我的项目的胜利打下坚实基础。

随着 Bamboo 构建次数幂等级的减少,咱们搭建 Bamboo Agent,为编译提供更多计算资源。从此开始,团队实现从继续集成到继续交付的转型,代码提交后可间接通过 DevOps 通道进入生产环境,多代理模式提供了多个版本和分支的代码同时 build 和 run 一个我的项目的可能,编译速度大幅度提高;同时咱们引入 Pipeline 工具,对交付流程进行可视化和模块化治理。

咱们陆续将 Bamboo 与 Jira、Git、Bitbucket 等工具进一步整合,实现了我的项目、开发工作、缺点、代码、环境、测试到生产的无缝关联,任何一步的操作都可寻踪觅迹找到源头,从该阶段开始,开发团队工作效率实现跨越式晋升,代码终于在 DevOps 通道中流动起来了,版本治理理念深入人心。同时咱们没有停下脚步,在团队外部针对不同开发组状况继续发展培训,并将麻利和 DevOps 理念贯通其中,在后续团队文化建设方面起到了重要作用。

接下来,咱们将 Bamboo 与 Nexus 进行集成,对编译日志进行了集中管理,获取编译波及代码的提交人,对其进行告诉,并通过 Jira 保护的开发人员与其项目经理列表,对代码项目经理进行告诉。

将编译过程与自动化测试进行集成,自动化测试报告间接在日志进行打印和告诉。

2019 年,咱们搭建了 Sonar 和 CAST 动态代码扫描工具,与工具链产品进一步集成,补全了 DevOps 交付通道根底工具上的最初一环。
自此,咱们的 DevOps 通道工具链根本铺设实现,在通道前开发人员交付代码,在通道后交付 war 包给运维,而 DevOps 通道上的工具对开发人员均通明,整个过程全副自动化实现。
不久的未来,咱们的 DevOps 通道将进一步输入容器到 PaaS 平台,实现更进一步的麻利交付。

回顾与总结

2019 年 8 月,Google 公布了 2019 年寰球 DevOps 倒退状况报告,其中将 IT 团队的交付效力分为低效、中效、高效和精英四个阶段,划分根据次要从部署频率、代码提交到交付的工夫以及失败率等因素进行判断。

报告对 2018 至 2019 年交付效率比照图可见,寰球交付精英团队占总体交付团队的占比只管相比于 2018 年进步了一倍无余,但仍仅占全副团队的 20%。

回顾这几年咱们 DevOps 通道工具链的倒退历程,IT 团队能从过来手工部署疾速转型到 DevOps 精英团队,离不开团队领导的方向指引和大力支持,离不开团队成员间的精益合作!

同时,在我的项目之初因为咱们正确的抉择了全球排名第一的麻利和团队合作工具平台:Jira+Confluence、Bitbucket+Bamboo 等,Atlassian 产品和插件之间的无缝组合让咱们的 DevOps 工具链能够被疾速部署和落地施行,也为咱们节约了贵重的工夫和人力资源!

退出移动版