什么是CI/CD?持续集成与持续交付

1、持续集成 CI(Continuous Integration)

什么是CI/CD?持续集成与持续交付_第1张图片
持续集成是一种软件开发实践,团队开发成员经常提交代码到代码仓库,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成,且每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误,从而使问题尽早暴露和解决。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,让构建、测试和集成代码更经常反复地发生。

在传统软件开发过程中,集成通常发生在每个人都完成了各自的工作之后。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。

开发人员通常使用一种叫做CI Server的工具来做构建和集成。持续集成要求史蒂夫和安妮能够自测代码。分别测试各自代码来保证它能够正常工作,这些测试通常被称为单元测试(Unit tests)。

代码集成以后,当所有的单元测试通过,史蒂夫和安妮就得到了一个绿色构建(Green Build)。这表明他们已经成功地集成在一起,代码正按照测试预期地在工作。然而,尽管集成代码能够成功地一起工作了,它仍未为生产做好准备,因为它没有在类似生产的环境中测试和工作。

CI是需要对开发人员每次的代码提交进行构建测试验证。确定每次提交的代码都是可以正常编译测试通过的。在没有持续集成服务器的时候,我们可以写一个程序来监听版本控制系统的状态,当出现了push动作则触发相应的脚本运行编译构建等步骤。现在有了专业的持续集成服务器后,我们借助持续集成服务器来实现版本控制系统中代码提交触发构建测试等验证步骤。

持续合并开发人员正在开发编写的所有代码的一种做法。通常一天内进行多次合并和提交代码,从存储库或生产环境中进行构建和自动化测试,以确保没有集成问题并及早发现任何问题。

持续集成的好处

持续集成可以使问题尽早暴露,尽早解决,从而降低了后期解决问题的难度,虽然持续集成无法消除bug,但却能大大降低修复bug的难度和时间。

如何做到持续集成

首先,持续集成需要:

1、单一的代码仓库,团队成员都向该仓库提交代码,如GitHub、GitLab、SVN代码仓库 ;
2、自动化构建且构建过程需要包含自动化测试;
3、有单独的集成机器用于构建,如CI Server,常用的软件如Jenkins;
4、保证构建速度不要太慢;
5、在类产品环境进行测试;
6、能够方便获取最新的可执行程序;
7、可视化,大家都能看到构建过程及结果;
8、自动化部署

2、 持续交付 CD (Continuous Delivery)

什么是CI/CD?持续集成与持续交付_第2张图片

Continuous Delivery (CD) 持续交付是持续集成的延伸,将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改。如果代码没有问题,可以继续手工部署到生产环境中。

持续交付CD:是基于持续集成的基础上,将集成后的代码自动化的发布到各个环境中测试(DEV TEST UAT STAG),确定可以发布生产版本。

开发环境发布:我们可以将开发环境产出的制品部署进行测试,没有问题后上传到测试环境的制品库中。

测试环境发布:此时通知测试人员可以进行测试环境发布测试,获取测试环境制品库中的制品,发布到测试环境验证。验证通过将制品上传到预生产环境制品库。

预生产环境发布:获取预生产环境制品,进行部署测试。测试成功后可以将制品上传到生产库中。

手动部署生产环境。

持续部署CD

持续部署CD:是基于持续交付的基础上,将在各个环境经过测试的应用自动化部署到生产环境。其实各个环境的发布过程都是一样的。应用发布到生产环境后,我们需要对应用进行健康检查、添加应用的监控项、 应用日志管理。

我们通常将这个在不同环境发布和测试的过程叫做部署流水线, 持续部署是在持续交付的基础上,把部署到生产环境的过程自动化。

你可能感兴趣的:(DevOps,CICD,Git,GitHub综合篇,ci/cd,Linux运维)