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. 李洪强-C语言3-数组

    一.数组的概念 用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. 二.数组的定义 格式: 类型 数组名[元素个数]: 举例:存 ...

  2. PHP Static Self 的区别

    <?php class Human{ public static function whoami() { echo "来自父类的whoami"; } public stati ...

  3. HTML5:离线存储(缓存机制)-IndexDB

    https://www.w3.org/TR/IndexedDB/ .. <!DOCTYPE html> <html> <head> <meta charset ...

  4. Memcached 笔记与总结(1)Linux(CentOS 6.6) 和 Windows(7)下安装与配置 Memcached (1.4.24)与 Memcached 基础命令

    Memcached 官方网站:http://memcached.org/ 官网对其的描述是: What is Memcached? Free & open source, high-perfo ...

  5. Redis 笔记与总结3 list 类型

    redis 版本 [root@localhost ~]# redis-server --version Redis server v= sha=: malloc=jemalloc- bits= bui ...

  6. 设计模式学习系列9 外观模式Facade

    1.概述 自己卖了一辆越野自行车,但毕竟不是自己定制的,买回来之后可能需要更改一下脚蹬,座皮,里程计数器或者刹车系统,假如将自行车看做一个整体系统,对我们而言使用的是自行车,然后我们对自己车构件的修改 ...

  7. iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)

    前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也 ...

  8. w-BIG TABLE-view+where-small table

    w-BIG TABLE DROP PROCEDURE IF EXISTS truncate_insert_sales_rank_toparow_month; DELIMITER /w/ CREATE ...

  9. 七 mybatis的延迟加载

    1       延迟加载 1.1     什么是延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.coll ...

  10. 【转】C# 解析JSON方法总结

    http://blog.csdn.net/jjhua/article/details/51438317 主要参考http://blog.csdn.NET/joyhen/article/details/ ...