Jenkins+Github+Docker+Maven实现持续集成
Jenkins+Github+Docker+Maven实现持续集成
SilvaSong 发表于1年前
Jenkins+Github+Docker+Maven实现持续集成
  • 发表于 1年前
  • 阅读 2799
  • 收藏 124
  • 点赞 2
  • 评论 9

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 开发的过程中我们经常会用到持续集成,在这里我想介绍下怎样通过Jenkins+Github+Docker来实现持续集成。

     持续集成的工具有很多,例如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"]
共有 人打赏支持
粉丝 3
博文 7
码字总数 5389
评论 (9)
12叔
这个我刚写过了。。
SilvaSong

引用来自“12叔”的评论

这个我刚写过了。。
最近刚好看书看到~就学习顺便记录了下来~
蔡镭
jenkins,buildbot都是持续集成工具,docker和他们不是一类
SilvaSong

引用来自“蔡镭”的评论

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

引用来自“zhf_sy”的评论

写的不够完整啊
你什么地方不懂么~
zhyan099
你好,初学docker,向你请教个问题,dockerfile文件放在哪个位置?
O_King
如果这样构建的话,docker容器会不会很庞大?因为maven的整个仓库都在容器之内!
YOU不可或缺
我想问下 jenkins打包后war在哪里? war包怎么转移放到了docker的tomcat里面 这个过程能讲下吗?
×
SilvaSong
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: