1. CI/CD介绍
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。
具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为"CI/CD 管道",由开发和运维团队以敏捷方式协同支持。
整体的流程框架如下:
2. CI 持续集成(Continuous Integration)
持续集成指的是频繁的将代码集成到主干(相当于开发测试环境)。
开发人员提交了新代码之后,立刻自动的进行构建,执行单元测试和集成测试(可以通过 Jenkins 完成),开发人员只需要提交代码,就可以得到这次集成的结果,根据结果,可以确定新代码和原有代码能否正确地集成在一起。
3. CD 持续交付(Continuous Delivery)
完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库(手动:预投产环境->生产环境)。
STAGING 环境可以理解为预投产环境,测试人员、运维等在预投产环境上对最终要部署的项目做最后一轮验证。
如果预投产环境验证通过,需要手动部署到生产环境。
4. CD 持续部署(Continuous Deployment)
持续部署可以自动将应用发布到生产环境(自动:预投产环境->生产环境)。
持续交付和持续部署的区别就是最终部署到生产环境的过程是否自动化。
5. 实操案例(CI持续集成)
环境要求:需要提前安装GitLab、Jenkins、Docker
预期效果:将本地代码提交到GitLab仓库,通过Jenkins拉取代码->编译->生成镜像->部署,最后可以成功访问。
- 编写代码,在本地正常运行。
一个简单的springboot项目,目录结构如下:
Dockerfile
FROM daocloud.io/library/java:openjdk-8u40-jdk
COPY jiangnan.jar /usr/local/
WORKDIR /usr/local/
CMD java -jar jiangnan.jar
docker-compose.yml
version: '3.1'
services:
jiangnan