首页 > 代码库 > jenkins+git实现docker持续部署
jenkins+git实现docker持续部署
jenkins所做的事情很简单,就拿我现在的情况来说吧,
(1)、每次开发完成,我都会push到我的远程仓库;
(2)、我再将我push到远程仓库的代码pull到我的测试服务器上;
(3)、在测试服务器上,我要重启下我的项目;
(4)、我再执行我的shell的测试脚本将代码打包放到tomcat/webapps下面;
(5)、最后去看我的脚本执行情况,得到结果
每次都是这样的一个重复步骤,这还是自己开发,自己测试的情况,如果是别人开发,那别人push后还得发邮件告诉我,我这边可以测试了。耽误的时间现在jenkins使用,我只需要将上面的配置好了,等开发那边开发完成,直接push就去做这些事
情。我这边什么都不用更管。我需要做的事情就只是针对他这次的更新,添加测试用例即可。
举个例子:
本地写了一个简单的web项目,我选择使用ant进行项目的打包,将项目传到github上面,然后在jenkins里新建了一个Job,然后配置这个Job,之后在源码管理部分选择git,然后填上项目的url,因为我把项目设置成了public,所以不需要配置用户名密码,之后对构建触发器Build periodically和Poll SCM进行设置(Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。我的配置如下:*/5 * * * * (每5分钟检查一次源码变化)Build periodically:周期进行项目构建(它不care源码是否发生变化),我的配置如下:0 2 * * * (每天2:00 必须build一次源码))之后在构建里面先选择Invoke Ant。之后在添加一个Execute shell,写上命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | if [ -f tag ] then cnt=`cat tag` cnt=`expr $cnt + 1`; echo "$cnt" > tag; else touch tag; cnt=1; echo "$cnt" > tag; fi if [ -f Dockerfile ] then echo ‘success‘ else touch Dockerfile; echo "FROM tomcat:latest" >> Dockerfile echo "MAINTAINER zmc zmc@zmcheng.net" >> Dockerfile echo "ADD DockerDemo.war /usr/local/tomcat/webapps" >> Dockerfile fi tag1=$(($cnt%10)); tag2=$(($cnt/10%10)); tag3=$(($cnt/100)); echo -e "******n\n" | sudo -S docker build -t 172.16.163.70:5000/test2:v$tag3.$tag2.$tag1 . echo -e "******n\n" | sudo -S docker push 172.16.163.70:5000/test2:v$tag3.$tag2.$tag1 echo -e "******n\n" | sudo -S docker run -d -P 172.16.163.70:5000/test2:v$tag3.$tag2.$tag1 |
完成一个简单Job的配置。简述一下上面cmd的意思,首先在当前目录下新建一个tag文件,利用这个tag文件可以确定当前镜像的版本(格式v0.0.0),之后在当前工程目录下新建Dockerfile,它依据的父镜像是tomcat:latest,然后将上面使用ant打成的war包放到当前镜像的/usr/local/tomcat/webapps下面,之后dcoker build打成镜像,docker push将镜像push到私库,最后运行此镜像。现在最大的好处就是只要你往github上传代码,jenkins就会帮你自动构建,并且你可以查看构建过程中产生的输出,这样你可以找到是哪里出的错。很好的工具,值得深入研究。
jenkins+git实现docker持续部署