DepOps方案Docker+Jenkins+GitHub实践

要实现—“DepOps方案:Docker+Jenkins+GitHub实践”必须实现三个步骤:(1)构建自己的Docker镜像容器 (2)Jenkins CI持续集成工具管理 (3)Github仓库代码管理。Docker可以根据任一一个镜像的基础上来构建自己的镜像,也就是Docker允许继承并自我定义和发展自己的镜像。使用镜像有很多好处,最直接的就是可以省却复杂环境的再次构建。

Dockerfile文件配置

maven下载地址:http://maven.apache.org/download.cgi

jenkins下载地址:http://updates.jenkins-ci.org/download/war/

FROM boonyadocker/tomcat-allow-remote:latest
MAINTAINER boonya <boonya@sina.com> 

# ************now add java and tomcat support in the container ******
ADD apache-maven-3.3.9-bin.tar.gz /usr/local/ 
ADD jenkins.war /usr/local/apache-tomcat-8.5.16/webapps/

# ************configuration of java and tomcat ENV **********

ENV MAVEN_HOME /usr/local/apache-maven-3.3.9

ENV PATH $PATH:$MAVEN_HOME/bin 

# ************container listener port **************
EXPOSE 8080 
# startup web application services by self 
CMD /usr/local/apache-tomcat-8.5.16/bin/catalina.sh run

注:以上是基于我的boonyadocker/tomcat-allow-remote:latest镜像构建一个Jenkins的配置。

Dockerfile镜像构建

构建命令: docker build -t boonyadocker/jenkins .

root@default:/usr/local/docker#  docker build -t boonyadocker/jenkins .
Sending build context to Docker daemon  81.23MB
Step 1/8 : FROM boonyadocker/tomcat-allow-remote:latest
 ---> 6137f64875dd
Step 2/8 : MAINTAINER boonya <boonya@sina.com>
 ---> Running in de845d9c160d
 ---> 4b0af4f26dd4
Removing intermediate container de845d9c160d
Step 3/8 : ADD apache-maven-3.3.9-bin.tar.gz /usr/local/
 ---> 27d8a3eee9c0
Removing intermediate container d35afcbae453
Step 4/8 : ADD jenkins.war /usr/local/apache-tomcat-8.5.16/webapps/
 ---> 13fe633c62df
Removing intermediate container 5c22fe45e3ec
Step 5/8 : ENV MAVEN_HOME /usr/local/apache-maven-3.3.9
 ---> Running in 470098cd48c6
 ---> 8de0d55b34b8
Removing intermediate container 470098cd48c6
Step 6/8 : ENV PATH $PATH:$MAVEN_HOME/bin
 ---> Running in b8aeda93a0ec
 ---> 4516bb4c1bd3
Removing intermediate container b8aeda93a0ec
Step 7/8 : EXPOSE 8080
 ---> Running in 318ccf3dd328
 ---> ffa7621607f4
Removing intermediate container 318ccf3dd328
Step 8/8 : CMD /usr/local/apache-tomcat-8.5.16/bin/catalina.sh run
 ---> Running in b685a0a9f8a7
 ---> 7cd7e633a573
Removing intermediate container b685a0a9f8a7
Successfully built 7cd7e633a573
Successfully tagged boonyadocker/jenkins:latest

Jenkins镜像的运行

首先查看构建的镜像列表:

root@default:/usr/local/docker# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
boonyadocker/jenkins               latest              7cd7e633a573        11 minutes ago      654MB
boonyadocker/tomcat-allow-remote   latest              6137f64875dd        2 days ago          571MB
boonyadocker/tomcat-web            latest              09677d05b579        5 days ago          571MB
apptomcat                          1.0                 249dc3f5dfb0        6 days ago          334MB
tomcat                             8                   a2fbbcebd67e        11 days ago         334MB
jenkins                            latest              0b4d4d677a26        2 weeks ago         681MB
ubuntu                             14.04               4a2820e686c4        3 weeks ago         188MB
wurstmeister/kafka                 latest              12453f4efa7b        6 weeks ago         265MB
root@default:/usr/local/docker# 

运行镜像命令:

docker run  -t -p 8080:8080 boonyadocker/jenkins:latest

运行完成后,打开f服务访问地址,如:http://192.168.99.100:8080/,如果看到如下界面说明启动成功:

Jenkins 基础安装和设置

用户授权

启动后可以访问Jenkins:

密码可以通过上面提示的方式去获取,如Docker的是在:https://wiki.jenkins.io/display/JENKINS/Logging#Logging-Docker

因为我的Jenkins 输入docker logs containerId并不能看到tomcat启动的日志,所以只好关闭容器重启,重启后Jenkins部署过程中仍然会提示Administrator paasword请注意查看启动日志,及时copy:

12-Jul-2017 03:07:23.100 INFO [Jenkins initialization thread] jenkins.install.SetupWizard.init 

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

173c5b840b074186ae63eb98e3bbaebc

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

上面173c5b840b074186ae63eb98e3bbaebc就是我们所需要继续安装的密码,不知道你拿到这个密码是否可用,你可以试下。

插件安装


选择推荐安装的插件就可以了。

创建用户

看到如下界面表示基础的安装已经完成:

下次你再次启动的时候,这些过程都不会再出现了。

创建一个项目Job并构建GitHub源码

全局工具设置


设置插件管理


创建项目


配置项目

Credentials设置

构建触发器

采用SCM从Github上定时拉取代码,一旦有代码更新就进行构建和部署:


构建项目

点击立即构建,首次构建maven回去下载包,所以比较慢,请耐心等待。我们来看第二次构建的控制台日志输出:

至此项目构建环境搭建成功。

构建后自动部署

上面的的Deploy war/ear to container配置问题修正(名字误差问题可以用*表示):

注:这里的Tomcat URL是我的boonyadocker/tomcat-allow-remote:latest 镜像运行地址。

通过Jenkins立即构建,maven输出日志:

Started by user Manlan Peng
Building in workspace /root/.jenkins/workspace/docker-jenkins
Fetching changes from the remote Git repository
Checking out Revision 62825b065e8a496cadff651060f6a1757b4000bd (refs/remotes/origin/master)
Commit message: "Go back to the codes!"
[docker-jenkins] $ /usr/local/apache-maven-3.3.9/bin/mvn -f pom.xml clean install
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building jenkins-docker 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ jenkins-docker ---
[INFO] Deleting /root/.jenkins/workspace/docker-jenkins/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ jenkins-docker ---

[WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /root/.jenkins/workspace/docker-jenkins/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ jenkins-docker ---

[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding ANSI_X3.4-1968, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /root/.jenkins/workspace/docker-jenkins/target/classes

[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ jenkins-docker ---
[WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /root/.jenkins/workspace/docker-jenkins/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ jenkins-docker ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ jenkins-docker ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-war-plugin:2.2:war (default-war) @ jenkins-docker ---

[INFO] Packaging webapp
[INFO] Assembling webapp [jenkins-docker] in [/root/.jenkins/workspace/docker-jenkins/target/jenkins-docker]
[INFO] Processing war project
[INFO] Copying webapp resources [/root/.jenkins/workspace/docker-jenkins/src/main/webapp]
[INFO] Webapp assembled in [70 msecs]
[INFO] Building war: /root/.jenkins/workspace/docker-jenkins/target/jenkins-docker.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ jenkins-docker ---
[INFO] Installing /root/.jenkins/workspace/docker-jenkins/target/jenkins-docker.war to /root/.m2/repository/com/boonya/jenkins/docker/jenkins-docker/0.0.1-SNAPSHOT/jenkins-docker-0.0.1-SNAPSHOT.war
[INFO] Installing /root/.jenkins/workspace/docker-jenkins/pom.xml to /root/.m2/repository/com/boonya/jenkins/docker/jenkins-docker/0.0.1-SNAPSHOT/jenkins-docker-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.037 s
[INFO] Finished at: 2017-07-17T09:17:09+00:00

[INFO] Final Memory: 14M/35M
[INFO] ------------------------------------------------------------------------
Deploying /root/.jenkins/workspace/docker-jenkins/target/jenkins-docker.war to container Tomcat 7.x Remote
  [/root/.jenkins/workspace/docker-jenkins/target/jenkins-docker.war] is not deployed. Doing a fresh deployment.
  Deploying [/root/.jenkins/workspace/docker-jenkins/target/jenkins-docker.war]

Finished: SUCCESS

上面的 Deploying 表示部署日志输出,通过浏览器访问能看到下图:

说明应用已实现构建和自动部署功能。

Jenkins构建和部署流程示意图


========================说明======================================

Docker容器:

  • jenkins是持续集成管理工具:可以实现代码构建、发布、自动化测试、代码质量等。
  • Tomcat用于接收部署程序的war包,独立运行于不同的环境。

源代码管理:

  •   常用的代码管理工具Git、GitHub、Subversion。

下一篇内容将着重讲解jenkins与Docker通过SSH持续集成。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值