工程化 CI/CD 管道安全实践
黎芷君
2022/09/07
免费下载
8 月 13 日, Eolink 联合 Q&EMeetup 举办以 “前端持续交付& “外循环” 开发实践” 为主题的线上沙龙活动。Eolink 前端负责人黎芷君进行了《工程化- CI / CD》的主题演讲,围绕 CI/CD 管道安全的实践,分享自己在搭建 CI/CD 管道过程中所总结的重要经验,与开发者深入讨论 “前后端” 那些事儿。
我们将分享内容整理如下,以飨读者。
以下为分享正文:
大家好,我是 Eolink 的前端负责人,黎芷君。
大家一定很好奇,作为一名前端人,我为什么会在这里跟大家分享工程化相关的内容呢?随着互联网越来越受重视,前端开发不再是简单的实现一个界面,使用 Javascript 让页面有一定的交互特效。在同一个时期的迭代里,我们可能需要同时开发浏览器应用、桌面端,甚至是 App、小程序等等。导致了我们迫切的需要考虑一种新的方式,优化我们前端的开发工作。而 CI/CD 是工程化的重要环节之一。
起因:为什么需要 CI/CD ?
我们每次项目迭代过程中都会听到的各种抱怨:来自测试的抱怨、开发的抱怨,甚至是技术主管、运维的抱怨......
时间一长,很可能会导致同一个项目组的成员关系越来越差,项目的质量也不会好。从下图可以看到项目迭代过程中常见 5 大现状:
或许有人会说:项目发版一年只有那么几次,比起项目快速的迭代,搭建 CI/CD 系统只是一件必要但是不紧急的事情。
我们先来看看 GitLab 2020 DevSecOps 的调查数据统计:
频繁的发版,可能导致我们每天都得耗在发版里,根本没有时间做新的迭代。这尚且是 2020 年的数据统计,如今已是 2022 年,发版只可能更加频繁。那么,搭建 CI/CD 系统还是一件不紧急的事情吗?
背景:什么是 CI/CD ?
CI/CD 起源于 70 年代,软件工程的概念被提出,告诉我们不仅需要会开发软件,还需要系统的、规范的开发和维护软件,这标志着工程化意识的觉醒。直到几十年后,2015 年比尔团队的《凤凰项目: 一个 IT 运维的传奇故事》这本书才介绍了 CI/CD 的雏形。现今,CI/CD 已被广泛地提起以及应用。70 年代,软件工程的概念被提出,告诉我们不仅需要会开发软件,还需要系统的、规范的开发和维护软件,这标志着工程化意识的觉醒。直到几十年后,2015 年比尔团队的《凤凰项目: 一个 IT 运维的传奇故事》这本书才介绍了 CI/CD 的雏形。现今,CI/CD 已被广泛地提起以及应用。
从字面意思理解,CI/CD 是由两部分组成的。
- CI 指代持续集成,是指我们 Push 代码后对代码进行的一系列质保实践。通过持续集成,我们可以更早地识别和修复错误以及安全问题。
- CD 是由持续交付和持续部署组成。简单理解是上线过程的一组实践,减少人为误操作的风险。
简单的理解就是,CI/CD 是持续集成和持续交付结合的一组实践。传统上我们将新代码从提交到生产中所需的大部分或全部都是人工干预,例如构建、测试和部署,以及基础设施的配置等等。而 CI/CD,是将一切都自动化了。使用 CI/CD 管道,开发人员只需将更改后的代码 Push 上代码仓库,然后 CI/CD 管道会自动构建和测试,最后进行交付和部署。
理论基础:深入了解 CI/CD
回顾完整的 CI/CD 过程图,我们可以发现版本控制和自动化测试是整个 CI/CD 管道中重要的两个环节。
版本控制在 CI/CD 中主要用于触发 CI/CD 流水线,它还有个分支管理策略,用于针对不同的环境的特殊场景做隔离处理。自动化测试主要是使用自动化的手段去执行测试,包括单元、集成、性能和验收等等。它可确保假设某一环节测试失败了,则阻止将功能部署到生产中,并且提升了我们代码本身的质量等等作用。
以下是 CI/CD 搭建的基本原则:
实例搭建 PC 项目的 CI/CD 管道
怎么去搭建 PC 也就是 electron 项目的 CI/CD 管道呢?以 Eolink Apikit 项目作为示例,以下是我们搭建 CI/CD 系统的步骤:PC 也就是 electron 项目的 CI/CD 管道呢?以 Eolink Apikit 项目作为示例,以下是我们搭建 CI/CD 系统的步骤:
先给大家解释一下项目背景, Eolink Apikit 平台除了提供 Web 浏览器应用外,还需要同时提供了 PC 桌面端应用,并且是经常性一起发版。
对 Web 应用来说,相对好一些,市面上很多现成的 CI/CD 方案能够参考。但是 PC 由于存在各种难点,例如需要绑定机器资源、代码签名等等,导致了它的 CI/CD 构建在一定程度上难以解决,并且市面上相关的资料也比较少,于是我们花了半个月时间,逐个去攻破难点,形成了现在的方案。
Eolink Apikit 项目的痛点,除了前面提到的缺乏可见性不存在之外,其他四个痛点:项目交付周期长、项目质量参差不齐、重复的执行测试、部署等操作以、发版等待时间过长,都一一具备。
难点
......
以上为 Eolink《工程化 CI/CD 管道安全实践》部分章节,填写右上方表单即可获取完整版课件~