jenkins+Docker+maven项目持续构建及docker化

来源:互联网 发布:饿了么送餐抢单软件 编辑:程序博客网 时间:2024/05/21 04:19

 1、安装配置Jenkins服务和Docker服务(不赘述)  

2、在Jenkins依托的宿主机上创建一个构建脚本(/home/skyform/项目名/rollingupdate.sh)

3、编写脚本:

   #!/usr/bin/sh
   dockerHost=IP:端口号       
   imageName=xxxx
   imageTag=v1
   containerName=xx
   ports1=xxxx:xxxx
   ports2=xxxx:xxxx
   ports3=xxxx:xxxx
   dockerfilePath=/var/lib/jenkins/workspace/Jenkins项目名/Dockerfile   (Dockerfile已经由项目人员编号并上传到了git)
   warPath=/var/lib/jenkins/workspace/Jenkins项目名/部署的maven项目文件/target/项目名.war  

   #在Jenkins项目目录下创建build文件并将war包和Dockerfile拷贝进去
   cd /var/lib/jenkins/workspace/Jenkins项目名/
   rm -rf build
   mkdir build
   docker login harbor:5000 -uadmin -ppassword
   cp $dockerfilePath ./build/
   cd build
   cp $warPath .

   #删除部署的物理机上已有的同名容器(保证以后的容器都是最新的git内容)
   docker -H $dockerHost rm -f  $containerName

   #构建镜像
   docker build -t $imageName:$imageTag .

   #删除镜像仓库里的镜像并将最新的镜像push上去
   curl -uadmin:password -IX DELETE http://harbor/api/repositories/skyform/rms/tags/v1
   docker push $imageName:$imageTag

   #创建容器并清除所有tag为<none>的镜像

   docker  -H $dockerHost pull $imageName:$imageTag
   docker -H $dockerHost run -d --restart=always -p $ports1 -p $ports2 -p $ports3 --hostname $containerName --name $containerName $imageName:$imageTag
   docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")


4、在Jenkins上新建一个maven项目并配置好git地址、触发器、build等(详细的配置过程可参考我的另一篇文章:http://blog.csdn.net/juixg/article/details/78059980)

5、在pre step中加入Execute shell方式并输入sh .home/skyform/项目名/rollingupdate.sh运行脚本

6、即可开始构建