实验中使用的Git平台:

  GitOsc


实验目的:

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


一、准备GitOsc:

1.准备项目文件

wKioL1iX42Xi8uUhAAEvCdx9QAk914.png

2.准备GitOsc

wKiom1iX44awCqKeAAGhAA17GJQ685.png

注:

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

 

3.上传原始文件

git add *

git commit -m "AddFile"

git push origin master

wKiom1iX46WheebHAAEaY-OPYY8914.png

 

二、配置Jenkins:

wKiom1iX48bi-SJQAAH8BPARBuk533.png

 

wKioL1iX4-bRrGMKAAEXe60_Jis969.png

 

wKioL1iX5AXBA8oLAAIHHT7_nj0485.png

 

wKiom1iX5DHCrOjgAAEnUsZj2yI273.png

 

wKioL1iX5EvD6TnsAAF4Wh9fmrA864.png

 

wKiom1iX5G7z2LGWAAJ6QqpUVTg619.png

 

wKiom1iX5IqgTpALAAGPCvpp1N0284.png

 

wKioL1iX5KbDZLVRAAGzp-BvoX8515.png

 

wKiom1iX5NrgQ9bOAAE6OPtNqEY316.png

wKioL1iX5P6CN1wmAAFtVl49yig228.png

 

三、在GitOsc上配置PUSH钩子:

wKiom1iX5VWjVPOjAAG6_ao0w4Y036.png

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

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

 

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

1.修改源代码

wKiom1iX5XmhA650AAJj3BsfUx4158.png

 

2.上传新文件

git add *

wKioL1iX5ZuwtlyDAAI_WzOHG5g690.png

 

git commit -m "Add newfile"

git push

 

 

效果:

wKiom1iX5c3A4SpZAAteNvJIHmY115.png

wKioL1iX5eqTN8tdAADlbbAI3NI813.png

 

 

wKiom1iX5gyAlSQLAAmrEf2yt04359.png

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.最后向临时文件中传入累计数,供下次任务使用