那如何实现可持续集成呢?
1 持续集成
1.1 持续集成介绍
1.1.1问题描述
传统的软件开发流程如下:
1、项目经理分配模块给开发人员
2、每个模块的开发人员并行开发,并进行单元测试
3、开发完毕,将代码集成部署到测试服务器,测试人员进行测试。
4、测试人员发现bug,提交bug、开发人员修改bug
5、bug修改完毕再次集成、测试。
问题描述:
1、模块之间依赖关系复杂,在集成时发现大量bug
2、测试人员等待测试时间过长
3、软件交付无法保障
解决上述问题的思考:
1、能否把集成测试时间提前?
2、能否使用自动化工具代替人工集成部署的过程?
1.1.2 什么是持续集成
下面是百度百科介绍
持续集成(Continuous integration)简称CI,持续集成的思想是每天要多次将代码合并到主干,并进行集成、测试,这样就可以提早发现错误,进行修正。持久集成也属于DevOps
持续集成的好处:
1、自动化集成部署,提高了集成效率;
2、更快的修复问题;
3、更快的进行交付;
4、提高了产品质量;
5、减少人力部署成本。
1.1.3 持续集成流程
jenkins搭建请参照本人另一篇文章:centOS7搭建jenkins,实现maven+tomcat+vue远程服务器自动化构建
上文未涉及docker容器化部署,下面再详细解说下docker与jenkins集成
1.1.4 docker与jenkins实现可持续集成
1、新建maven项目
2、配置git地址
3、配置maven构建前操作
配置远程shell命令
#!/bin/bash
// 查看是否存在启动容器
result=$(docker ps | grep "live-service")
if [[ "$result" != "" ]]
then
echo "stop live-service"
// 停止容器
docker stop live-service
fi
// 查看是否存在容器
result1=$(docker ps -a | grep "live-service")
if [[ "$result1" != "" ]]
then
echo "rm live-service"
// 删除容器
docker rm live-service
fi
// 查看是否存在镜像
result2=$(docker images | grep "live-service")
if [[ "$result2" != "" ]]
then
echo "rmi ip:5000/live-service:2.0.0"
// 删除镜像
docker rmi ip:5000/live-service:2.0.0
fi
大概脚本流程就是 停止容器---删除容器---删除镜像
4、配置maven编译地址、命令
5、执行编译后,远程服务器,执行脚本
配置远程shell命令
docker run --name live-service -p 8099:8099 -d ip:5000/live-service:2.0.0
docker logs -f live-service
大概流程就是 从docker私有仓库拉取镜像---创建容器并启动
6、执行构建,返回success则构建成功
进入任务页面,点击“立即构建”
开始构建,查看日志,sucess则成功
构建成功后,服务器上可以看到镜像启动成功
此外,jenkins支持自动化、定时构建。