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持续部署的更多相关文章
- jenkins+git+maven搭建自动化部署项目环境
简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...
- Docker部署Jenkins 2.285版持续部署集成实践(1)
抓取Jenkins镜像 docker pull jenkins/jenkins 创建映射本地路径: 运行Jenkins实例 docker for windows: docker run -it -p ...
- Jenkins +git +python 进行持续集成进行接口测试(接口测试jenkins持续集成篇)
使用jenkins+git+python脚本进行持续集成的接口测试,在jenkins平台,利用插件等,把管理代码的git仓库的代码更新下来进行持续接口测试,python进行开发测试脚本,git进行远程 ...
- Jenkins+git+gitlab实现持续自动集成部署
1 实验环境 三台服务器 gitlab 192.168.7.139 Jenkins 192.168.7.140 java 192.168.7.141 [root ...
- Docker部署Jenkins 2.285版持续部署集成实践(2)
前言:上一篇文章中,写到了jenkins搭建,下面记录使用jenkins构建项目实践 1. 以构建.netcore项目为例,如果要构建.netcore项目,需要安装dotnet-sdk包 进入jenk ...
- Jenkins+Git+Maven构建并部署war包到tomcat
主要思路:1.jenkins从git中拉取项目源码:jenkins使用maven构建并将生成的war部署到tomcat容器下. 环境:Centos7.Maven3.5.3.git(单机) 安装Git ...
- Jenkins+Git+Maven构建并部署springboot(构建多模块中的单个模块)
主要思路:1.jenkins从git中拉取项目源码:jenkins使用maven构建并将生成的jar包通过shell脚本启动. 环境:环境:Centos7.Maven3.5.3.git(单机) 准备工 ...
- JAVA项目如何通过Docker实现Jenkins持续部署
原文地址:http://blog.51cto.com/dadonggg/1957691 本篇实操性的案例讲解——JAVA项目如何通过Docker实现持续部署(只需简单四步), 即:开发通过git pu ...
- 环境部署(七):linux下Jenkins+Git+JDK持续集成
前面几篇博客介绍了linux下安装Jenkins.Git.JDK以及Git基础教程和Git关联github等内容,这篇博客,介绍下如何在linux服务器中利用它们构建持续集成环境... 一.准备工作 ...
随机推荐
- debug阶段工作期站立会议1
组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...
- git统计报告
2016年10月30日--2016年11月9日
- FTP协议详解(转)
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application ...
- linux里的进程简介
/sbin/init 内核启动的第一个用户级进程,引导用户空间服务 [kthreadd] 内核线程管理[migration/0] 用于进程在不同的CPU ...
- mysql的事务和select...for update
一.mysql的事务mysql的事务有两种方式:1.SET AUTOCOMMIT=0;也就是关闭了自动提交,那么任何commit或rollback语句都可以触发事务提交;如果SET AUTOCOMMI ...
- docker安装与启动
安装docker [root@localhost /]# yum -y install docker-io 更改配置文件 [root@localhost /]# vi /etc/sysconf ...
- Java中测试对象的等价性
Java中用于测试对象的等价性有三个操作符:== , != 和 Equals() 对于基本类型即int,boolean, byte 等等来说,==和 != 比较的是 基本类型的内容,这和c.c++是一 ...
- 深入了解Windows句柄到底是什么
深入了解Windows句柄到底是什么 http://blog.csdn.net/wenzhou1219/article/details/17659485 总是有新入门的Windows程序员问我Wind ...
- 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程
http://jijiaa12345.iteye.com/blog/1739754 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程 本文是一篇在Myeclipse下构建Jav ...
- (转)js一道比较考验的题目
转载下别人曾经出过的一道面试题,此题是他出的一套前端面试题中的最后一题,用来考核面试者的JavaScript的综合能力,很可惜到目前为止的将近两年中,几乎没有人能够完全答对,并非多难只是因为大多面试者 ...