『 云原生·Docker』Docker构建持续集成

系列文章目录

本系列主要分为以下六大部分,正在更新中,尽请期待!

🚩点击关注本专栏


提示:已经更新的或正在更新的文章前面打勾了哈!

文章目录


前言

你有没有想过可以不用手动进行测试,模拟环境中进行自测、可以不用手动发布、部署,自动化实现发布部署、可以不用管开发/测试环境,只用专注代码的开发?

学习持续集成,通通帮你实现。

一、什么是持续集成?

持续集成(Continuous integration,简称CI):是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

在这里插入图片描述
也就是说,持续集成指的是,我们可以频繁地(一天多次)将代码集成到主干,这样做的好处主要有两个:

  1. 快速发现错误:每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
  2. 防止分支大幅偏离主干:如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

可以说这样对于我们进行团队开发是有极大帮助的。

小结:

  • 持续集成是一种软件开发实践
  • 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量
  • 持续集成并不能消除Bug,而是让它们非常容易发现和改正。 – 敏捷大师Martin Fowler

与持续交付(CI)相对应的肯定就是CD了,接下来我们来看看什么是持续交付和持续部署。

1.持续交付

持续交付(Continuous delivery,简称CD):完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。

在这里插入图片描述

在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。

在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

比如:我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。

小结:

  • 持续交付就是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」

2.持续部署

持续部署(Continuous deployment,简称CD):是通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提高了人的效率,让 engineering productivity 最大化。

在这里插入图片描述

对于一个成熟的 CI/CD 管道来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。

由于在生产之前的管道阶段没有手动门控,因此持续部署在很大程度上都得依赖精心设计的测试自动化。

小结:

  • 持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化;

3.实现持续集成

要实现持续集成首先我们需要:

  1. 一个自动构建过程: 从检出代码、 编译构建、 运行测试、 结果记录、 测试统计等都是自动完成的, 无需人工干预。
  2. 一个代码存储库:即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,一般使用SVN或Git。
  3. 一个持续集成服务器: Jenkins 就是一个配置简单和使用方便的持续集成服务器。

在准备好这些先决条件之后,我们就可以开始构建持续集成:

  1. 开发人员提交代码到代码仓库(SVN或Git)。
  2. 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
  3. 最后,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

  1. 下载基于JDK11的Jenkins镜像
docker pull jenkins/jenkins:lts-jdk11
  1. 数据文件夹创建
mkdir -p /usr/local/server/jenkins
chmod 777 /usr/local/server/jenkins
  1. 创建启动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
  1. 查看Jenkins初始密码
#查看密码有2种方式

#挂载目录查看,因为目录挂载了,所以数据会同步到宿主机中
cd /usr/local/server/jenkins/secrets
#查看
cat initialAdminPassword

#或者进入容器查看
docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
  1. 浏览器访问Jenkins
  • 地址: http://主机IP:8081/
  • 输入Jenkins初始密码

到这里Jenkins的安装就完成了,关于Docker构建持续集成后面会专门出一期来进行演示的!

看看本专栏文章有哪些吧!

本系列文章目录:

  • 『 云原生·生之门』
  • 『 云原生·前置知识』
  • 『 云原生·Docker』
  • 『 云原生·Kubernetes』
  • 『 云原生·KubeSphere』
  • 『 云原生·DevOps』

🚩点击关注本专栏

可以看出来本系列文章将会带你从-1到1的学习云原生的,一起加油吧!

总结

看完之后,我们就可以利用当前的开源技术实现持续集成,运行自己的私有云平台,加速企业的系统集成效率,缩短部署时间,提高成功率。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注