实验中使用的Git平台:

  GitOsc


实验目的:

GitOsc上传新代码后,自动通过Maven打包,然后构建相应的Tomcat镜像,并启动容器


一、准备GitOsc:

1.准备项目文件

Git+Jenkins+Docker实现web项目的自动部署_第1张图片

2.准备GitOsc

Git+Jenkins+Docker实现web项目的自动部署_第2张图片

注:

提示输入用户名和密码的时候,用户名使用完整的邮箱名

 

3.上传原始文件

git add *

git commit -m "AddFile"

git push origin master

Git+Jenkins+Docker实现web项目的自动部署_第3张图片

 

二、配置Jenkins:

Git+Jenkins+Docker实现web项目的自动部署_第4张图片

 

Git+Jenkins+Docker实现web项目的自动部署_第5张图片

 

Git+Jenkins+Docker实现web项目的自动部署_第6张图片

 

Git+Jenkins+Docker实现web项目的自动部署_第7张图片

 

Git+Jenkins+Docker实现web项目的自动部署_第8张图片

 

Git+Jenkins+Docker实现web项目的自动部署_第9张图片

 

Git+Jenkins+Docker实现web项目的自动部署_第10张图片

 

Git+Jenkins+Docker实现web项目的自动部署_第11张图片

 

Git+Jenkins+Docker实现web项目的自动部署_第12张图片

Git+Jenkins+Docker实现web项目的自动部署_第13张图片

 

三、在GitOsc上配置PUSH钩子:

Git+Jenkins+Docker实现web项目的自动部署_第14张图片

http://ghx:63919fc15e0b82c9b8c3ac47af8dabbd@180.172.232.87:9999/job/test-hello/build?token=test-token

//必须使用Jenkins的公网IP,注意映射9999端口和50000端口

 

四、修改hello项目的源代码,并pushGitOsc上:

1.修改源代码

Git+Jenkins+Docker实现web项目的自动部署_第15张图片

 

2.上传新文件

git add *

Git+Jenkins+Docker实现web项目的自动部署_第16张图片

 

git commit -m "Add newfile"

git push

 

 

效果:

Git+Jenkins+Docker实现web项目的自动部署_第17张图片

wKioL1iX5eqTN8tdAADlbbAI3NI813.png

 

 

Git+Jenkins+Docker实现web项目的自动部署_第18张图片

wKioL1iX5iqyaTE7AADo1Jnyh4U810.png

 

shell脚本:

Registry_URL=192.168.1.200:5000
tmpfile=/root/tempfile
if [ -e $tmpfile ] ; then
   sum=`cat $tmpfile`
   i=`expr $sum + 1`
else
   sum=0
   i=`expr $sum + 1`
fi
docker build -tmaven-hello:test $WORKSPACE/hello-maven
docker create --namemaven-hello maven-hello:test
docker cpmaven-hello:/hello/target/hello.war $WORKSPACE/hello-tomcat
docker build -t$Registry_URL/tomcat-hello:test${i} $WORKSPACE/hello-tomcat
docker push$Registry_URL/tomcat-hello:test${i}
if docker ps -a |grep -itomcat-hello ; then
docker rm -f tomcat-hello
fi
docker run -d -p 8888:8080--name tomcat-hello $Registry_URL/tomcat-hello:test${i}
if docker p_w_picpaths$Registry_URL/tomcat-hello | grep test${sum}  ; then
docker rmi -f$Registry_URL/tomcat-hello:test${sum}
fi
if docker ps -a |grep -imaven-hello ; then
docker rm -f maven-hello
fi
if docker p_w_picpaths maven-hello |grep test  ; then
docker rmi -f maven-hello:test
fi
echo $i >$tmpfile


 

脚本作用:

 

1.设置一个临时文件,记录该任务执行次数,用于做Tag

2.构建顺序:

使用源代码构建maven镜像,同时制作成war->maven容器中导出war->构建新的tomcat镜像->push到私有仓库

3.删除原来的tomcat容器,并通过最新的tomcat镜像运行一个新的tomcat容器

4.依次删除不必要的容器&镜像:

删除旧的tomcat镜像->删除刚创建的maven容器->删除刚构建的maven镜像

5.最后向临时文件中传入累计数,供下次任务使用