严格来讲,今天的内容和 Jenkins 的关系并不大,但是和 CI/CD 的关系却很大。开始的时候,我们有简单介绍过 CI/CD。现在在我们接触了 Jenkins,知道了 Pipeline 后,我们再回头来看看 CI/CD。
pipeline 将我们软件整个生命周期都定义在一条线上,我们可以将这条线连接成一个环,以不断循环的方式进行软件的发布更新,整个环节中有一个最重要的东西 —————— 自动化。
首先,我们将我们的代码提交到版本控制系统(VCS)中,当代码提交后,我们的构建系统自动开始进行构建(build),在构建过程中,会触发相关的测试,代码的语法检测,单元测试,等等。构建完成后,将完整可用的软件交给测试人员,进行功能性测试。整个过程,都是以自动化的方式完成。
此时,CI/CD 貌似已经结束?但随着行业的发展,当越来越多的自动化测试架构的出现,大多数功能性测试也可以被自动化替代。通过功能性测试的软件被传输到了一下个阶段。
最终用户在他们自己的环境中部署软件,这个过程还是需要手动完成,这就变成了 CI/CD 的最后 “一公里”。这时产生了一个新的概念持续部署(continuous deployment),我们需要使用一种自动化的手段来部署我们的软件。随着 Docker,kubernetes 诞生,我们可以轻松实现软件的部署,扩容。
随着软件的更新,新的代码被提交,我们的 pipeline 又从新开始新一轮的循环。