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持续部署的更多相关文章

  1. jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...

  2. Docker部署Jenkins 2.285版持续部署集成实践(1)

    抓取Jenkins镜像 docker pull jenkins/jenkins 创建映射本地路径: 运行Jenkins实例 docker for windows: docker run -it -p ...

  3. Jenkins +git +python 进行持续集成进行接口测试(接口测试jenkins持续集成篇)

    使用jenkins+git+python脚本进行持续集成的接口测试,在jenkins平台,利用插件等,把管理代码的git仓库的代码更新下来进行持续接口测试,python进行开发测试脚本,git进行远程 ...

  4. Jenkins+git+gitlab实现持续自动集成部署

    1  实验环境 三台服务器 gitlab        192.168.7.139 Jenkins    192.168.7.140 java          192.168.7.141 [root ...

  5. Docker部署Jenkins 2.285版持续部署集成实践(2)

    前言:上一篇文章中,写到了jenkins搭建,下面记录使用jenkins构建项目实践 1. 以构建.netcore项目为例,如果要构建.netcore项目,需要安装dotnet-sdk包 进入jenk ...

  6. Jenkins+Git+Maven构建并部署war包到tomcat

    主要思路:1.jenkins从git中拉取项目源码:jenkins使用maven构建并将生成的war部署到tomcat容器下. 环境:Centos7.Maven3.5.3.git(单机) 安装Git ...

  7. Jenkins+Git+Maven构建并部署springboot(构建多模块中的单个模块)

    主要思路:1.jenkins从git中拉取项目源码:jenkins使用maven构建并将生成的jar包通过shell脚本启动. 环境:环境:Centos7.Maven3.5.3.git(单机) 准备工 ...

  8. JAVA项目如何通过Docker实现Jenkins持续部署

    原文地址:http://blog.51cto.com/dadonggg/1957691 本篇实操性的案例讲解——JAVA项目如何通过Docker实现持续部署(只需简单四步), 即:开发通过git pu ...

  9. 环境部署(七):linux下Jenkins+Git+JDK持续集成

    前面几篇博客介绍了linux下安装Jenkins.Git.JDK以及Git基础教程和Git关联github等内容,这篇博客,介绍下如何在linux服务器中利用它们构建持续集成环境... 一.准备工作 ...

随机推荐

  1. CSS中a标签样式的“爱恨”原则

    CSS为一些特殊效果准备了特定的工具,我们称之为“伪类”.其中有几项是我们经常用到的,下面我们就详细介绍一下经常用于定义链接样式的四个伪类,它们分别是: 1 :link 2 :visited 3 :h ...

  2. 关于iOS手势

    引: 前几天遇到一个坑,又仔细分析了一下事件的原理,不得不承认苹果的文档还是写的挺好的,网上就搜不到有几篇博客是介绍这个的,都是一些关于基本的用法的.这里纪录一下. 1.关于事件响应链. a.硬件接收 ...

  3. 记一本关于thinkphp&&MVC的好书

    看过好多书,写thinkphp就蜻蜓点水般,而且语言比较书面.看到了李开涌写的php mvc开发实战.他本人是技术方面的专家,写的书结合了对技术的理解.我读起来感觉收获颇多.比如model这块,我一直 ...

  4. MUI - 手势

    www.bcty365.com/content-146-2389-1.html 配置事件 mui.init({ gestureConfig: { hold: true, //长按屏幕,默认是false ...

  5. Apache Spark源码走读之18 -- 使用Intellij idea调试Spark源码

    欢迎转载,转载请注明出处,徽沪一郎. 概要 上篇博文讲述了如何通过修改源码来查看调用堆栈,尽管也很实用,但每修改一次都需要编译,花费的时间不少,效率不高,而且属于侵入性的修改,不优雅.本篇讲述如何使用 ...

  6. Apache Spark源码走读之9 -- Spark源码编译

    欢迎转载,转载请注明出处,徽沪一郎. 概要 本来源码编译没有什么可说的,对于java项目来说,只要会点maven或ant的简单命令,依葫芦画瓢,一下子就ok了.但到了Spark上面,事情似乎不这么简单 ...

  7. Frenetic Python实验(三)

    实验5 repeater 这个实验在HelloSDNWorld里面做的实验是一样的.HelloSDNWorld 目的:模拟一个有多个端口的中继器. This application implement ...

  8. Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别

    2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...

  9. mysql之触发器trigger 详解

    为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table)  ...

  10. ArcGIS for Sever 10.1 服务迁移与恢复

    === 声明:以下内容本是自己写给单位内部同事的参考手册,但是被传到百度文库中.陆续有用户就这方面的问题,通过电话,邮件等方式联系我.首先,感到荣幸.其次是,由于本人当时测试和编写的时候,由于仓促,可 ...