关于gitlab:我与CI流水线的羁绊任谁也无法斩断

40次阅读

共计 3530 个字符,预计需要花费 9 分钟才能阅读完成。

本文来自:
程恒 极狐(GitLab) 培训讲师

极狐(GitLab) CI 流水线设计直播课上周落下帷幕,小伙伴们学习热情高涨,想听听 CI 流水线设计课程背地的故事。那么明天,作为本次直播课讲师,我联合本人的亲自体验,与大家分享利用极狐 GitLab CI 流水线之前的经验。在这里,我先借用我的导师分享的一句话“What does not kill you, makes you stronger”。深有共鸣,与大家共勉。

你是否也有这样一个困惑

首先,咱们再认识一下继续集成(Continuous Intergration,简称 CI)。在软件工程中,CI 是将所有开发人员的工作正本每天屡次合并到共享主线的做法。每个集成都通过主动构建(包含测试)进行验证,以尽快检测集成谬误。

CI 次要的目标就是为了实现品质内建(Built-in-Quality),在开发阶段就解决大部分的品质和平安问题。

提到 CI,大家往往就想到了自动化测试,尽管自动化测试并非 CI 的严格组成部分。

市面上对于自动化测试的实际比拟多,比方 TDD(测试驱动开发)、BDD(行为驱动开发)、DDD(畛域驱动开发)、ATDD(验收测试驱动开发)等等。

在您布局或设计流水线的时候,是否思考了这样一个问题:自动化测试对于您的业务来讲,它真的值得的吗?下图给了一个十分概况的估算形式。

点击查看具体阐明信息

我与 CI 的前半生

工夫回到 2014 年,这注定不平庸的一年。这是我接触到 DevOps 的第一年,也是我率领金融团队的第一年,是我职业生涯中的第一个转折。

尽管在之前的工作经验中,我在规模 300+ 人的我的项目里有过四年率领 10 多人团队的教训,但过后更多的是关注业务层面的设计以及实现,这一次的我的项目却须要关怀到软件生命周期中的方方面面。还记得,拿到整个我的项目的零碎形成图之后,我的感觉就是这样的:

第一条流水线:真香啊

该我的项目属于保护性质(在已有的我的项目根底上开发),特色比拟显著,客户也比拟随(you)和(qian),要求在两周内公布一些新个性。要上线的时候,我才发现,团队外面竟然没有人做过部署,要做就是 WinSCP 的工具拖拽,部署 10 次就有 9 次跑不起来(剩下的一次就是我部署的)。

为了我的项目的顺利进行,我用 Jenkins 部署了 人生中的第一条 CI 流水线,整个 CI 流水线只有两个性能,打包和部署环境 。破费的工夫从原来的 1 人日 / 部署,缩短到了 10 分钟 / 部署, 我尝到了 CI 的苦头,真香啊~(当年的我的项目奖金拿到手也是真香)

第二条流水线:磨人小妖精

我的项目过程中除了有不顺,还有更不顺。随着我的项目进入正规,一些问题也逐步浮现,品质上属于大错不犯,小错一直,客户天然对于品质产生了担心。为了打消客户的放心,我投入到品质剖析和报告中去,这些工作占据了我大部分的工夫,最厉害的一次做到了一个月两次品质报告。可是,品质报告 ≠ 品质晋升,还得通过欠缺各种流程,加上各种代码的人工评审流程,这些让团队疲惫不堪,可是不见任何成果。

最初,SonarQube 进入了我的眼帘,动态扫描集成到 Jenkins 后,团队终于能够把更多地精力投入到业务层面的确认,研发品质失去了晋升。这是我印象中比拟粗浅的 第二条流水线,蕴含了动态扫描来解决代码层面的问题,然开发团队更多的专一于业务层面

瓜葛:编码一时爽,重构火葬场

因为客户业务倒退的需要和相干的安全性思考,决定半年后降级现有的 Java 版本和中间件。除了降级中间件,还须要通过重构改善现有零碎的性能,最初的测试工夫只有一个月。“编码一时爽,重构火葬场”,做过开发的同学应该都有粗浅的领会,没有测试的重构,想想都头皮发麻🤕。

修成正果,基于价值进行 CI 设计的实际诞生了

客户虐我千百遍,我待客户如初恋。该做的事件一件都不能少,没有条件也要创造条件上。通过统计,整个零碎中有多达 3000 个页面,页面显示还跟电文数据无关(🤕我很开心啊,一点都不惆怅)。

一个月的工夫基本就不可能实现,我的发际线后移了一毫米后,解决这个问题的计划浮现了:

首先,至多要保障整个业务线可能失常实现,过后思考到采纳 UI 系的自动化测试(不过全副开发实现破费的老本太多)。其次,为了确保测试效用最大化,咱们利用 Google Analytics 工具,确认到次要业务的访问量占前 90% 的页面,测试范畴缩减到了 300 个。

最初,为了进步测试用例的生产性,咱们基于 Selenium 开发了本人的 UI 自动化测试的工具(测试人员只须要关注数据和页面上的元素),测试用例编写效率晋升了 5 倍。通过计算,思考到自动化投入的工夫和老本,由原来的 100 集体月缩短到了 10 集体月,不过这也笼罩到了绝大多数的用户场景。这个是我第一次投入和收益的思路来解决这个问题,并压服客户采纳咱们的计划

DevOps 平台的路在何方?

从当初往回看,符合实际业务价值的事件,怎么做都没有错。

√ 麻利宣言背地的十二条准则第一条:【Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.】咱们最重要的指标,是通过继续一直地及早交付有价值的软件使客户称心。
√ SAFe 精益麻利准则第一条:【Take an economic view】采纳经济视角

他们无一不是看中的价值。

起初,咱们以 Jenkins 为外围, 搭建了一套以开源工具为主的 DevOps 通用平台(Jira+Jenkins+SonarQube+Nexus+confluence+LDAP)。基于这个 DevOps 平台解决方案和经济视角,在之后的工作中屡试不爽。这个时候我有一种“平台在手,天下我有”的自豪感。

做过 DevOps 的同学都晓得,工具链平台有着比拟致命的问题:工具链中的工具你是否敢降级?

  • 当工具降级的时候,可能会对整个工具链造成微小的冲击。(比如说 Jenkins 插件抵触导致 Jenkins 解体,工具联动被毁坏)然而不降级,又不能用到最新的性能,那你是降级呢还是降级呢?
  • Jira 进行了售卖 Server 版产品许可证,接下来也会进行 Server 版的反对(然而客户的业务需要是环境只能在本地环境)
  • 辛辛苦苦开发的一款插件,因为工具版本升级问题,间接生效。

我开始陷入深深的狐疑,企业用的 DevOps 平台真的应该是这样的吗?

我与 CI 再续前缘

第三条流水线:真的贵

2020 年的时候,咱们在反对某金融领取公司进行 DevOps 落地的时候,平安 是咱们不得不思考的问题。

为了防止“人还在,钱没了”的难堪问题,咱们引入了浸透新测试工具 Owasp Zap,以确保在上线之前修复已知的平安问题。然而投入的人力,资源,保护老本绝对来讲还是比拟大的。这是我印象比拟粗浅的 第三条流水线,在已有的流水线上增加渗透性测试模块,压力测试模块,页面自动化测试模块等

第四条流水线:走钢丝般的感觉

还记得前段时间 Log4j 的平安问题,席卷了寰球大半的软件公司。咱们在给客户 DevOps 落地的时候,也遭逢到了这个问题。咱们花了很大的精力才从无数个依赖包中找出指标,并复查了相干的问题。那大家排查问题的形式是怎么样的呢?大家是怎么确认本人工程的依赖包都排查完了的呢?

为了疾速开发,咱们通常会间接援用第三方包来实现咱们的性能,但若无心中援用了某些不适合的包,可能造成侵权行为。随着国家对知识产权的爱护,开发人员的一些“误援用”,会对产品造成比拟大的影响。试想想,公司投入了大量的人力物力开发的产品,终于要开始盈利了,然而在第二天的新闻上爆出“侵权”的问题,我真的会谢。于是,我设计 第四条流水线诞生了,在流水线中增加了依赖扫描,以及许可证合规,以避免企业一些不必要的损失

终于等到你

这一次借着筹备极狐 GitLab CI 直播课的契机,我深度摸索了极狐 GitLab 许多多开箱即用的性能。回顾过去经验的这些我的项目,我恨我为什么没有早点遇到极狐 GitLab,那样的话,我的发际线也能保住了。

咱们置信“化繁为简,用户至上 ”的开发理念,会给大家带来更多开箱即用的性能;“ 植根中国,凋敝生态”的愿景,让大家从繁琐的工具集成中解放出来,助力大家的软件开发翻新。

世界上没有最完满的流水线,只有最适宜您业务的流水线。

要翻新,用极狐!JiHu, make innovation happen !

如果您想深刻理解如何依据企业本身的状况搭建 CI 流水线,能够 点击下方链接,获取相干课程材料

  • 《2 小时精通 CI 流水线设计》视频 +PDF
  • CI Demo 库

同时参加 CI 流水线搭建工作调整,还能取得极狐(GitLab) 周边哟!

实现 5 个 Demo 工作,解锁极狐棒球帽 1 个
实现 3 个 Demo 工作,解锁极狐手办 1 个
前 10 名实现挑战的敌人,将额定取得极狐抱枕 1 个

正文完
 0