ITPub博客

基于Jenkins+Git+Docker的持续集成(上)

原创 IT综合 作者:junsansi 时间:2017-03-02 11:36:25 0 删除 编辑
Git是目前最为流行的版本管理工具之一;
Jenkins是目前最为流行的持续集成工具之一;
Docker则是目前最为火热的轻量化容器解决方案;
前两者的组合已经非常普遍,那么能不能再与Docker结合起来呢?当然是肯定的,我们希望通过Jenkins结合docker,即能最大化的利用系统资源,又能实现应用服务的快速构建,本文将详细介绍,如何基于Jenkins+Git+Docker搭建一套支持快速构建的持续集成方案。

本文所演示环境涉及三台(类)服务器,不过在文中仅涉及到对后两类服务器的配置:
Git服务器:172.16.1.8,现有服务,用于管理代码;
Docker宿主机服务器:172.19.10.157,待搭建,用于运行docker容器;
Jenkins服务器:172.19.10.232,待搭建,用于运行Jenkins服务。

一、安装和初始化Jenkins
Jenkins服务器中已经安装配置好JDK/MAVEN/TOMCAT几个软件的运行环境。在本例中,所使用的上述三软件的版本为:apache-maven-3.3.3、jdk1.7.0_09、tomcat-7.0.34,并均运行于操作系统用户tomcat下。
提示1:以下操作是在Jenkins服务器执行,如非特别说明,均是在tomcat用户下操作。
提示2:在启动tomcat服务之前,建议先修改相关环境变量,通过JAVA_OPS参数为JAVA虚拟机分配适当的内存空间,避免Tomcat运行过程中出现内存溢出的情况。
例如:
[tomcat@web01 ~]$ vi /home/tomcat/tomcat-7.0.34/bin/catalina.sh
文件头部增加下列内容(考虑到本地测试服务器配置较差,因此分配内存较小,大家可基于个人实际情况对参数值进行修改):
JAVA_OPTS="-server -Xms512M -Xmx1024M -XX:PermSize=128M -XX:MaxPermSize=256m -Dcom.sun.management.jmxremote  -Duser.timezone=GMT+08 -Djava.awt.headless=true"

Jenkins的安装十分简单,下载好的Jenkins就是一个war包,直接复制到Tomcat的webapps目录下即可运行。
那么我们就先来下载最新版本的jenkins,并保存到Tomcat应用目录下:
[tomcat@web01 ~]$ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -P /home/tomcat/tomcat-7.0.34/webapps

启动tomcat服务:

[tomcat@web01 ~]$ tomcat-7.0.34/bin/catalina.sh start
Using CATALINA_BASE:   /home/tomcat/tomcat-7.0.34
Using CATALINA_HOME:   /home/tomcat/tomcat-7.0.34
Using CATALINA_TMPDIR: /home/tomcat/tomcat-7.0.34/temp
Using JRE_HOME:        /home/tomcat/jdk1.7.0_60
Using CLASSPATH:       /home/tomcat/tomcat-7.0.34/bin/bootstrap.jar:/home/tomcat/tomcat-7.0.34/bin/tomcat-juli.jar

启动过程中注意观察tomcat的输出日志,我们下载的jenkins War会自动进行解压缩和初始化,过程中创建的默认管理员帐户和密码信息,在日志文件中会有所体现,例如:

[tomcat@web01 ~]$ tail -100f tomcat-7.0.34/logs/catalina.out 
...............
Jan 21, 2017 13:04:11 PM jenkins.install.SetupWizard init
INFO: 

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

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

8c5abb9fcc7b4258aadac65ed5113b5a

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

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

............
INFO: Finished Download metadata. 20,529 ms
............

然后通过浏览器访问jenkins,未登录的情况下会跳转到登录页,第一次登录时需要输入初始化帐户的密码,也就是前面我们在日志文件中提示的那段字段:

 

输入管理员密码,点击Continue按钮后,会有一个初始化的过程,需要等待个几秒钟,而后将跳转到选装插件的页面,如下所示:

 

我们选择后者,以自定义的方式安装需要的组件。

 

默认情况下,它也仍为帮我们选择一些必备/常用组件(点上图红色箭头所指的标签,会对插件进行默认勾选),在此基础之上,我们又新增了一些组件,主要包括:


? Git plugin:支持基于Git进行构建的插件;

? Git Parameter Plug-In:我们的软件发布是基于分支,而不是的基于master,通过Git Parameter插件方便我们选择要构建的分支版本,当然如果您没有这方面的需求,那么也可以不安装本插件;
? GitLab Plugin:因为我们本地的Git是基于GitLab搭建的一套私服,选择这一组件主要是为了能够触发一些自动化构建相关的操作;
? Maven Integration plugin:发布Maven2/3项目的插件;
? Publish Over SSH:基于SSH发布到另外的节点;
? SSH plugin :与上同理;

当然大家也可以直接全选,安装所有的插件,尽管可能有很多插件都用不上。其实这里想告诉大家,不必过于纠结安装什么插件,以及安装的正确与否,那个都不重要,因为我们随时可以根据需求来调用我们安装的插件。


选择完要安装的插件后点击Install:

 

之后就需要等待一会了,根据你选择插件的多寡,耗费的时间也不同。等到所有的插件全部安装完之后,还有一个步骤,创建管理员帐户:

 

然后,就能看到Jenkins的主界面了。

 
二、搭建docker宿主机
提示:以下操作是在docker宿主机端执行,如非特别说明,均是在root用户下操作。

增加一个软件安装源,将docker官方地址做为软件的安装源加入本地三方源地址,编辑文件如下:

root@docker01:~# vi /etc/apt/sources.list.d/docker.list 

只需增加一行:

deb [arch=amd64] https://apt.dockerproject.org/repo debian-jessie main

接下来别忙着执行apt-get,先更新一下apt源,以确保能够检测到最新的资源,执行命令如下:

root@docker01:~# apt-get update 

如果执行apt-get update时遇到:E: The method driver /usr/lib/apt/methods/https could not be found.那么先执行:# apt-get install apt-transport-https

然后就可以通过apt-get安装docker了,执行命令如下:
root@docker01:~# apt-get install docker-engine
Reading package lists... Done
Building dependency tree       
Reading state information... Done
...................

安装成功之后,通过docker命令查看当前docker版本:

root@docker01:~# docker --version
Docker version 1.13.1, build 092cba3

接下来我们创建一个专用用户docker并设置初始密码(为演示方便也设置为docker):

root@docker01:~# useradd docker -d /home/docker -s /bin/bash -g docker
root@docker01:~# echo "docker:docker" | chpasswd

这一步的目的主要是为了在jenkins中配置ssh发布时,不必直接使用root这样一个具备超大权限的用户。

此时镜像、容器都是空的。
root@docker01:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@docker01:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

考虑到我们接下来运行的JAVA工程要运行于tomcat容器,因此我们先拉取一个tomcat镜像,做为基础镜像,执行命令如下:

root@docker01:~# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
5040bd298390: Pulling fs layer 
fce5728aad85: Pulling fs layer 
c42794440453: Pulling fs layer 
9789263043d1: Waiting 
6c6ea13aad15: Waiting 
...............
...............
Digest: sha256:2c72f00904dc057441c388bb9101f7ca254174c9b061f99789e48bf495226deb
Status: Downloaded newer image for tomcat:latest
root@docker01:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              99765a0d7f44        14 hours ago        355 MB
Ok,这样Docker宿主机环境就搭建好了。(未完待续

更多内容请扫描二维码,关注【IT营养师】!




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-2134557/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-21

  • 博文量
    645
  • 访问量
    4077363