持续集成的工具有很多,例如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"]