文档章节

Jenkins+Github+Docker+Maven实现持续集成

SilvaSong
 SilvaSong
发布于 2016/04/20 22:20
字数 1017
阅读 4039
收藏 129

     持续集成的工具有很多,例如Jenkins、Strider、Drone.io等。我自身接触Jenkins比较多,在这里我就选选择Jenkins、Github、Docker来实现简单的实现持续集成。

    Github大家都应该非常了解一个非常好用的开源的代码托管平台,本文使用的示例源码就托管在github。

    Docker则是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中。

    运行环境  ubuntu 14.04

    一、安装Jenkins

           ubunut下可以通过apt-get方式安装Jenkins. 

sudo apt-get update
sudo apt-get install jenkins

            Jenkins默认使用的是8080端口,安装完成后浏览器访问 http://192.168.0.1:8080(ip换成你自己的)看到下面的页面证明安装成功.

   

       Jenkins安装过程中会在系统中默认创建一个Jenkins用户,Jenkins会使用该用户来执行构建脚本。因为Jenkins用户权限问题会导致一些未知的错误.建议使用root用户来执行Jenkins构建脚本.

       可以通过修改/etc/default/jenkins 让默认的用户为root。    

# user and group to be invoked as (default to jenkins)
#JENKINS_USER=$NAME
JENKINS_USER=root
#JENKINS_GROUP=$NAME
JENKINS_GROUP=root

 二、安装docker

      ubunut下也可以通过apt-get方式安装docker. 还有很多安装方式具体可以参考下docker官方文档https://docs.docker.com/engine/installation/linux/ubuntulinux/

sudo apt-get update
sudo service docker start

三、安装Jenkins github插件

    因为选择的是github作为代码托管工具,需要给jenkins安装Github Plugin。

    安装步骤: 访问Jenkins--> 系统管理 -->管理插件-->安装Github Plugin

     配置github用户认证信息(必须要配置否则无法正常下载源码)

      配置步骤: 系统管理 -->系统配置

      点击ADD添加认证信息.

      

四、创建Jenkins作业

       1)  单击新建连接

       2)填写作业名称、选择 构建一个自由风格的软件项目 .    

           

        3) 添加GitHub project

         

       4) 配置源码管理

           源码管理方式选择git,添加github仓库和认证信息.

           

      5)增加构建步骤  execute shell

          通过shell脚本来实现docker镜像的创建,以及使用Maven打包项目war包,启动tomcat服务器.

docker build -t cijd .    #构建cijd镜像
if [ -n $(awk $(docker ps -a -q))]
 then
 docker rm -f $(docker ps -a -q)  #删除历史纪录
fi
docker run -d -p 8888:8080 cijd  #部署镜像指定宿主机8888端口转发到docker容器中tomcat 8080端口

       6)运行一次构建

         点击立即构建,控制台输出如下内容表示构建成功.

 ---> 169dc0859a28
Step 18 : EXPOSE 8080
 ---> Using cache
 ---> 876fbcc5db60
Step 19 : CMD ./var/tmp/tomcat/apache-tomcat-8.0.33/bin/catalina.sh run
 ---> Using cache
 ---> 02300f000731
Successfully built 02300f000731
+ docker ps -a -q
+ awk 42ee1ea78bdf
+ [ -n ]
+ docker ps -a -q
+ docker rm -f 42ee1ea78bdf
42ee1ea78bdf
+ docker run -d -p 8888:8080 cijd
829e25f7bf0e32720f2cf292d48dc74aa3fef6e02271911ba6015c8421e5ee08Finished: SUCCESS

 

通过访问  http://192.168.0.1:8080/CIJD 你可以看到示例项目已经部署成功.

五、示例代码.

    示例代码地址: https://github.com/silvasong/CIJD ,如果不想自己新建项目可以fork。

    另外介绍下dockerfile文件,了解docker都应该知道dockerfile是构建docker镜像的关键.

FROM ubuntu:latest
MAINTAINER Silva Song "silva.song@aliyun.com"

#安装JDK
RUN apt-get update
RUN apt-get install -y openjdk-7-jdk && apt-get install -y wget

#安装tomcat
RUN mkdir /var/tmp/tomcat
RUN wget -P /var/tmp/tomcat http://mirrors.noc.im/apache/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz
RUN tar xzf /var/tmp/tomcat/apache-tomcat-8.0.33.tar.gz -C /var/tmp/tomcat
RUN rm -rf /var/tmp/tomcat/apache-tomcat-8.0.33.tar.gz 

#安装maven
RUN mkdir /var/tmp/maven
RUN wget -P /var/tmp/maven http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
RUN tar xzf /var/tmp/maven/apache-maven-3.3.9-bin.tar.gz -C /var/tmp/maven
RUN rm -rf /var/tmp/maven/apache-maven-3.3.9-bin.tar.gz
#设置maven环境变量
ENV MAVEN_HOME=/var/tmp/maven/apache-maven-3.3.9
ENV PATH=$MAVEN_HOME/bin:$PATH


#打包示例项目并拷贝到tomcat webapps目录
RUN mkdir /var/tmp/webapp
ADD ./ /var/tmp/webapp
RUN cd /var/tmp/webapp && mvn package && cp /var/tmp/webapp/target/CIJD.war /var/tmp/tomcat/apache-tomcat-8.0.33/webapps

EXPOSE 8080
#启动tomcat服务器
CMD ["./var/tmp/tomcat/apache-tomcat-8.0.33/bin/catalina.sh","run"]

© 著作权归作者所有

共有 人打赏支持
SilvaSong
粉丝 4
博文 7
码字总数 5389
作品 0
成都
后端工程师
私信 提问
加载中

评论(9)

YOU不可或缺
YOU不可或缺
我想问下 jenkins打包后war在哪里? war包怎么转移放到了docker的tomcat里面 这个过程能讲下吗?
O_King
O_King
如果这样构建的话,docker容器会不会很庞大?因为maven的整个仓库都在容器之内!
zhyan099
zhyan099
你好,初学docker,向你请教个问题,dockerfile文件放在哪个位置?
SilvaSong
SilvaSong

引用来自“zhf_sy”的评论

写的不够完整啊
你什么地方不懂么~
zhf_sy
zhf_sy
写的不够完整啊
SilvaSong
SilvaSong

引用来自“蔡镭”的评论

jenkins,buildbot都是持续集成工具,docker和他们不是一类
不好意思写错了~ 谢谢指出 ,应该是Drone.io。
蔡镭
蔡镭
jenkins,buildbot都是持续集成工具,docker和他们不是一类
SilvaSong
SilvaSong

引用来自“12叔”的评论

这个我刚写过了。。
最近刚好看书看到~就学习顺便记录了下来~
12叔
12叔
这个我刚写过了。。
6.2、 产品经理甩锅指南-CI环境

上次在这里提到了敏捷开发scrum,6、产品经理和包工头的故事,敏捷开发背景下,还有CI(持续集成)环境,持续交付和持续部署。 小奈:今天捅了个篓子,我只是叫开发,修改个导航栏而已。 也测试...

产品经理的技术课堂
06/01
0
0
fir.im weekly - 「 持续集成 」实践教程合集

我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集成系统的经验,...

风起云飞fir_im
2016/05/09
69
0
《持续交付-发布可靠软件的系统方法》读书笔记-持续集成

《持续交付-发布可靠软件的系统方法》全书51.2万字,15章,384页。本次阅读第三章持续集成,大概42页。 持续交付 持续集成最早出现在Kent Beck写的《解析极限编程》一书中,主要思想:既然经...

转型实践者
2017/11/25
0
0
云计算持续集成的优势WiseCloud睿云智合最新科技

睿云智合WiseCloud平台能同时支持多种主流容器集群编排调度管理平台,在帮助金融企业用户规避容器底层框架技术路线选择风险上,带来很大灵活性,我们提供给用户充分技术保障。

光辉岁月op
2017/12/15
0
0
基于Jenkins 快速搭建持续集成环境

持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile)...

openthings
2015/12/09
338
0

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
16
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
24
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
30
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
13
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部