jenkins 自动部署 结合 git maven gogs docker webhook

今天来了性趣,发一篇博文吧,也为行业贡献一点 记得从2010年就开始使用 jenkins,哪时不太懂,这些年越来越熟悉

以前使用jenkins是这样的: maven 父子工程,jenkins 构建开始,jenkins从svn获取代码,哪时git还没有诞生,获取代码后,maven编译打包,编译报错,直接发邮件,将war包发布到tomcat目录,启动tomcat。

现在一切都在变化,从git获取代码,maven打包,通过shell脚本将包copy到指定目录,启动docker, 我们用的gogs作为git仓库,每次开发人员提交代码,自动触发jenkins构建------ 直接上截图:

b61de85dae410989929be900ee90660244e.jpg

2、

8d7f57d1628beaf17e22515f1ddb84ba0d4.jpg

3、

0b449d12a41c9eb67ce3ef0fe1f7c9b11c9.jpg

因为没有安装git,截图里写错了

4、centos7 安装好git ,在jenkins里配置一下,不会安装git 的,请自行百度

b806eb037cb8cad5cbec9a7cfe8d5c93334.jpg

——————————————————————————————————————

64860a1cef078860f53edbadf01111d25a3.jpg

 

——————————————————————————————————————————

46ee85ee4ae6613a4b8e2fc40b55bbcec8e.jpg

 

——————————————————————————————————————

ec827c4642e348e690479a5d20eeebca202.jpg

——————————————————————————————————————————

5、构建前清理空间

4459ee6608831ac2cda91d328e1bd8d056d.jpg

6、构建

3db784e8f36df9eef0bec96c4ff382790ca.jpg

378f660f95b8446cc46940f88aaf23c0414.jpg

b732c99ee21d75a20a356ccaa74a770c068.jpg

clean compile package -Dmaven.test.skip=true

7、

6e21bc0eb13402c579aa53df1b5a1d13813.jpg

1ceb056aaf007bac129b81e9759660cbf51.jpg

——————————————————————————

cp /var/lib/jenkins/workspace/mdjr-oa/target/mdjr-oa-0.0.1-SNAPSHOT.jar /docker/maven-tar/mdjr-oa/

#删除无引用的镜像和容器服务
#docker rm $(docker ps -a -q)
#docker rmi $(docker images -a -q)

#查询服务是否运行 docker ps –a –f ancestor=hello-world 或 dockerps –s –filter=”ancestor=hello-world” ancestor代表image

dockfw=$(docker ps -q -f name=oa-server | grep -v grep | wc -l)
 if [ $dockfw -gt 0 ];
 
       then
             #停止服务
             docker stop oa-server
             # -f 强删除服务
             docker rm -f oa-server
        else
               print "oa-server is not found"
fi


#查询镜像是否存在 ocker images -q --filter=reference='mdjr/oa-server:1.0.0' | grep -v grep | wc -l
dockjx=$(docker images -q -f reference=mdjr/oa-server:1.0.0 | grep -v grep | wc -l)
if [ $dockjx -gt 0 ];

    then
           # -f 强删除镜像
           docker rmi mdjr/oa-server:1.0.0
    else
        print 'oa-server mirror image is not found';
fi


sleep 1

#到Dockerfile所在目录
cd /docker/maven-tar/mdjr-oa

#创建镜像
docker build -t mdjr/oa-server:1.0.0 .

sleep 3

# -d 后台运行,表现在jenkins控制台不打印docker logs 服务日志,如果不加-d,由于一直在打印日志,所以构建不会结束
docker run -d -p 6060:6060 --name oa-server --net=host mdjr/oa-server:1.0.0

# 在这里加这个不生效 -v /etc/localtime:/etc/localtime:ro 所以在Dockerfile中加 Duser.timezone=GMT+08 或 RUN echo "Asia/shanghai" > /etc/timezone; 都行
#docker run  -d -p 6060:6060 --name oa-server -v /etc/localtime:/etc/localtime:ro --net=host mdjr/oa-server:1.0.0 /bin/bash
 
#docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro

——————————————————————————

 

8、一切完成后,jenkins 删除空间的构建文件

80e8de4dc5b9b00be7e8d4a03f2dd322b2b.jpg

9、

c5f412b0d94d082519b29d5cb72664e89fd.jpg

10、配置 提交代码到  git ,jenkins 自动构建

56ce03e85c18c7ad8db35e5b129c90b75c9.jpg

————————————————————————————————————

3a3c7b72cec6eb044ecd249fe500158160d.jpg

——————————————————————————————————

8627435407331195ab465a476d7b99d2009.jpg

——————————————————————————————————————————

11、回到oa-server的配置中

8e5d10589c0e5817294d3799b912a02ea51.jpg

 

——————————————————————————————————————————

12、到gogs中去

f49c332bc00587ed39b0b064db7874a63ac.jpg

 

————————————————————————————————————

28134ef20016d241d016d55b2c80a8ad93c.jpg

————————————————————————————————————

999f225ebdf59cdfa361f1c4d400af9a1e2.jpg

——————————————————————————————————————————

a3071d452ede6c9e28c6c72af0c7c5b9dbb.jpg

点击测试推送,看看jenkins是不是在构建

 

转载于:https://my.oschina.net/prosouly/blog/1837033