系列文章目录
本系列主要分为以下六大部分,正在更新中,尽请期待!
- 『 云原生·生之门』
- 『 云原生·前置知识』
- 『 云原生·Docker』
- 『 云原生·Kubernetes』
- 『 云原生·KubeSphere』
- 『 云原生·DevOps』
提示:已经更新的或正在更新的文章前面打勾了哈!
前言
你有没有想过可以不用手动进行测试,模拟环境中进行自测、可以不用手动发布、部署,自动化实现发布部署、可以不用管开发/测试环境,只用专注代码的开发?
学习持续集成,通通帮你实现。
一、什么是持续集成?
持续集成(Continuous integration,简称CI):是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
也就是说,持续集成指的是,我们可以频繁地(一天多次)将代码集成到主干,这样做的好处主要有两个:
- 快速发现错误:每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
- 防止分支大幅偏离主干:如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
可以说这样对于我们进行团队开发是有极大帮助的。
小结:
- 持续集成是一种软件开发实践
- 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量
- 持续集成并不能消除Bug,而是让它们非常容易发现和改正。 – 敏捷大师Martin Fowler
与持续交付(CI)相对应的肯定就是CD了,接下来我们来看看什么是持续交付和持续部署。
1.持续交付
持续交付(Continuous delivery,简称CD):完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。
在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。
在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。
比如:我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
小结:
- 持续交付就是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」
2.持续部署
持续部署(Continuous deployment,简称CD):是通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提高了人的效率,让 engineering productivity
最大化。
对于一个成熟的 CI/CD 管道来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。
由于在生产之前的管道阶段没有手动门控,因此持续部署在很大程度上都得依赖精心设计的测试自动化。
小结:
- 持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化;
3.实现持续集成
要实现持续集成首先我们需要:
- 一个自动构建过程: 从检出代码、 编译构建、 运行测试、 结果记录、 测试统计等都是自动完成的, 无需人工干预。
- 一个代码存储库:即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,一般使用SVN或Git。
- 一个持续集成服务器: Jenkins 就是一个配置简单和使用方便的持续集成服务器。
在准备好这些先决条件之后,我们就可以开始构建持续集成:
- 开发人员提交代码到代码仓库(SVN或Git)。
- 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
- 最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。
二、什么是Jenkins?
Jenkins:是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"
编译、打包、分发部署。
1.Jenkins的特征
Jenkins有以下特征:
- 开源的Java语言开发持续集成工具,支持持续集成,持续部署。
- 易于安装部署配置:可通过 yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
- 消息通知及测试报告:集成 RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
- 分布式构建:支持 Jenkins能够让多台计算机一起构建/测试。
- 文件识别: Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
- 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如 git,svn,maven,docker等。
- Jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。
2.Docker安装Jenkins
- 下载基于JDK11的Jenkins镜像
docker pull jenkins/jenkins:lts-jdk11
- 数据文件夹创建
mkdir -p /usr/local/server/jenkins
chmod 777 /usr/local/server/jenkins
- 创建启动Jenkins容器
#端口:8081
docker run -d \
--privileged=true \
-p 8081:8080 \
-p 50000:50000 \
-v /usr/local/server/jenkins:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
--restart=always \
--name=jenkins \
jenkins/jenkins:lts-jdk11
- 查看Jenkins初始密码
#查看密码有2种方式
#挂载目录查看,因为目录挂载了,所以数据会同步到宿主机中
cd /usr/local/server/jenkins/secrets
#查看
cat initialAdminPassword
#或者进入容器查看
docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
- 浏览器访问Jenkins
- 地址:
http://主机IP:8081/
- 输入Jenkins初始密码
到这里Jenkins的安装就完成了,关于Docker构建持续集成后面会专门出一期来进行演示的!
看看本专栏文章有哪些吧!
本系列文章目录:
- 『 云原生·生之门』
- 『 云原生·前置知识』
- 『 云原生·Docker』
- 『 云原生·Kubernetes』
- 『 云原生·KubeSphere』
- 『 云原生·DevOps』
可以看出来本系列文章将会带你从-1到1的学习云原生的,一起加油吧!
总结
看完之后,我们就可以利用当前的开源技术实现持续集成,运行自己的私有云平台,加速企业的系统集成效率,缩短部署时间,提高成功率。
转载:https://blog.csdn.net/apple_51673523/article/details/127651376