目录
什么是持续集成
持续交付(CD)
编辑
持续部署
持续集成的操作流程
回滚
Jenkins简介
jenkins安装及使用
插件安装
编辑
配置JDK和Maven
配置ssh
编辑
部署应用
持续集成(CI)
持续集成(Continuous integration)指的是频繁地(一天多次)将代码集成到主干。它的好处主要有两个:
Martin Fowler 说过,"持续集成并不能消除 Bug,而是让它们非常容易发现和改正。"
持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
持续交付(Continuous delivery)指的是频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-likeenvironments)中。比如我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
在TEST环境测试完,在STAGING类生产环境可能会有各种各样的问题,本版问题,内存条问题,等等
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。、
根据持续集成的设计,代码从提交到生产,整个过程有以下几步。
提交
流程的第一步,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交(commit)。
测试(第一轮)
代码仓库对commit 操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。
测试的种类:
代码仓库对commit 操作配置了钩子(hook),只要提交代码或者合并进主干,就跑自动化测试。
测试的种类:
第一轮至少要跑单元测试。
构建
通过第一轮测试,代码就可以合并进主干,就算可以交付了。
交付后,就先进行构建(build),再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等。
常用的构建工具如下:
Jenkins 和 Strider 是开源软件,Travis 和 Codeship 对于开源项目可以免费使用。它们都会将构建和测试,在一次运行中执行完成。
测试(第二轮)
构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要移到第一轮测试前面。
第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。
需要强调的是,新版本的每一个更新点都必须测试到。如果测试的覆盖率不高,进入后面的部署阶段后,很可能会出现严重的问题。
部署
通过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包( tarfilename.tar * )存档,发到生产服务器。
生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号链接(symlink)指向这个目录,然后重新启动应用。这方面的部署工具有Ansible,Chef,Puppet等。
一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。(就是类似于软链接指向上个版本)
Jenkins,原名Hudson,2011年改为现在的名字,它是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/。
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
特点:
Docker环境下的安装
apt install docker.io
systemctl status docker
apt update #更新库
sudo apt-get upgrade
下载Jenkins的Docker镜像
docker pull jenkins/jenkins:lts #最新版本lst
在Docker容器中运行Jenkins 10.0.0.100:8080
docker run -di --name=jenkins -p 8080:8080 -v /mydata/jenkins_home:/var/jenkins_home
jenkins/jenkins:lts
有可能启动失败,是权限问题啊,用以下命令解决
chown -R 1000 /mydata/jenkins_home
使用管理员密码进行登录,可以使用以下命令从容器启动日志中获取管理密码
docker logs jenkins
cat /mydata/jenkins_home/secrets/initialAdminPassword #亦可以看到
[root@ubuntu2004 ~]#cd /mydata/jenkins_home/ #jenkins的相关目录
如果失败了几个可以多点几次重试
进行实例配置,配置Jenkins的URL
至此,Jenkins开始使用
红色为不建议安装 安装是否成功都可以显示出来:灰色-等待,红色-失败,蓝色-成功
最后点击保存即可
ssh目前没有修复,但是我们使用内网部署,不存在这种情况,外网部署的情况需要慎重考虑
需要创建凭据,先去创建
之后在配置ssh 可以点击右下角测试写下 保存
先将代码上传至码云(GitHub或Gitab)
有一点需要注意,要将pom.xml中的dockerHost地址改成你自己的Docker镜像仓库地址:
执行脚本准备
在/usr/local/jenkins目录下创建jenkins.sh
#!/usr/bin/env bash
app_name='jenkinsdemo'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker run -di --name=${app_name} -p 7070:7070 test/${app_name}:1.0-SNAPSHOT
echo '----start container----'
给.sh脚本添加可执行权限
chmod +x ./jenkins.sh
在Jenkins中创建执行任务
选择自由 点击确定
添加maven构建
增加构建执行shell
点击保存,这样任务就好了
可以在这里添加淘宝加速
/mydata/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven/conf/settings.xml