持续集成和持续部署成为现代 DevOps 趋势下的重要环节,很多角色岗位都要求 CI/CD 的相关技能。本文介绍了什么是 CI/CD 流水线,以及如何从零构建 CI/CD 流水线
在当前 DevOps 的趋势下,持续集成(CI)和持续部署(CD)具有支柱性地位,那么能够成功搭建 CI/CD 流水线就至关重要了。我们可能会在各种角色的岗位描述中发现关于「持续集成」和「持续部署」技能的要求,比如:数据工程师、云解决方案架构师、数据科学家等。为了在开发团队和运营团队之间搭建桥梁,CI/CD 流水线实现了应用程序的自动构建、自动测试和自动部署。本文中,我们将介绍什么是 CI/CD 流水线,以及它是如何工作的。
什么是 CI/CD 流水线?
CI 代表持续集成(Continuous Integration),CD 代表持续交付(Continuous Delivery)和持续部署(Continuous Deployment)。也可以将它们看作是类似于软件开发生命周期的过程。
现在我们来看一下它是如何工作的。
如上图所示,该流水线展示了一个软件在其最终交付给客户或者投入上线之前,它在其生命周期内各个阶段中的移动过程。
接下来我们具体看一下该 CI/CD 流水线。假如我们要构建一款 Web 应用程序,并将它部署在一个现场 Web 服务器上。同时我们有一组开发人员,他们主要负责编写代码,并将代码构建为 Web 应用程序。假设现在开发团队已经将代码提交到版本控制系统(如:Git,SVN)中了。
构建阶段
接下来,代码将会经历构建阶段,这也是 CI/CD 流水线的第一阶段。在此之前,开发者已经将他们的代码加上合适的标签,并提交到版本控制系统中了。
假如我们采用的是 Java 语言,那么还需要先进行代码编译。因此,代码在通过版本控制阶段之后,会先在构建阶段予以编译。该阶段会从代码库的各个分支中获取到所有的功能代码,合并后最终通过一个编译器来编译它们。这整个过程都被称为「构建阶段」。
测试阶段
构建阶段结束后,将会继续进入到代码的「测试阶段」。在这个阶段中,我们会进行各种各样的测试,单元测试就是其中之一。在该阶段中,我们会测试代码中多个组件间的关系或者单个组件的功能,同时也会进行软件的可用性测试。
部署阶段
测试阶段完成后,就要进入「部署阶段」了。在该阶段,代码将会被部署到准生产环境服务器(staging server)或者测试环境服务器(test server)中。同时在该阶段中,我们既可以查看