Jenkins在CentOS系统中安装与配置(初级篇)

Jenkins概念

Jenkins 是一个可扩展的持续集成引擎,能够实现自动部署功能

主要使用场景:

  • l 持续、自动地构建/测试软件项目。
  • l 监控一些定时执行的任务。

Jenkins拥有的特性包括:

  • l 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
  • l 易于配置-所有配置都是通过其提供的web界面实现。
  • l 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
  • l 生成JUnit/TestNG测试报告。
  • l 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
  • l 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
  • l 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具

Jenkins由来

       目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您的开发团队应对如下挑战:

  •  软件构建自动化 :配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
  •  构建可持续的自动化检查 :CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。
  • 构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
  • 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。

部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。

下图概括了CI系统的基本结构

 

Jenkins在CentOS系统中安装与配置(初级篇)

该系统的各个组成部分是按如下顺序来发挥作用的:

1. 开发者检入代码到源代码仓库。

2. CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。

3. CI系统会在对应的工作区内执行构建过程。

4. (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。

5. (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。

6. CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。

Jenkins是这么一个CI系统。之前叫做Hudson

以下是使用Jenkins一些理由:

  • l 是所有CI产品中在安装和配置上最简单的。
  • l 基于Web访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了AJAX的即时反馈。
  • l Jenkins是基于Java开发的(如果你是一个Java开发人员,这是非常有用的),但它不仅限于构建基于Java的软件。
  • l Jenkins拥有大量的插件。这些插件极大的扩展了Jenkins的功能;它们都是开源的,而且它们可以直接通过web界面来进行安装与管理。

Jenkins目标

Jenkins的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。

CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。

特别是它具有以下优点:

  • Jenkins一切配置都可以在web界面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。
  • 支持Maven的模块(Module),Jenkins对Maven做了优化,因此它能自动识别Module,每个Module可以配置成一个job。相当灵活。
  • 测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他CI,这几乎是件不可能完成的任务。
  • 构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。


Jenkins安装与配置

Jenkins是一个非常出色的持续集成服务器,本文主要介绍在CentOS系统中Jenkins的基本安装配置方法,供参考。

一. 软件包:

1. 下载apache-maven-2.2.1-bin.tar
http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-2.2.1-bin.tar.gz
2. 下载jenkins:http://mirrors.jenkins-ci.org/war/ 列出了jenkins的所有release版本,请选择下载

二. 安装

 

本文假设操作用户为gistech。

1. 安装jdk,参考《CentOS系统中安装JDK1.6》
2. 安装tomcat7,参考《CenOS系统中安装Tomcat7》

修改tomcat配置文件

$ vi /home/gistech/tomcat/conf/server.xml

 

修改8080端口的Connector节点,增加如下配置

URIEncoding="UTF-8"

 

3. 安装maven
1) 解压

$ tar -zvxf apache-maven-2.2.1-bin.tar.gz

 

2) 移动到其他目录

$ mv apache-maven-2.2.1 /home/gistech/maven

3) 配置环境变量
编辑.bash_profile文件

$ cd /home/gistech
$ vi .bash_profile

 

添加如下内容

MAVEN_HOME=$HOME/maven
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin

export MAVEN_HOME
export PATH

 

使环境变量生效

$ source .bash_profile

 

4) 验证是否安装成功

$ mvn -v   

 

5) 配置maven
编辑maven的配置文件

$ cd maven/conf
$ vi settings.xml

 

修改配置文件示例如下:

Jenkins在CentOS系统中安装与配置(初级篇)
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository>/home/gistech/~m2</localRepository>
    <servers>
        <server>
            <username>admin</username>
            <password>password</password>
        </server>
    </servers>
    <mirrors>
        <mirror>
            <!-- This sends everything else to /public -->
            <id>nexus</id>
            <mirrorOf>central</mirrorOf>
            <url>http://192.168.120.247:8081/nexus/content/repositories/public</url>
        </mirror>
    </mirrors>
    <profiles>
        <profile>
            <id>nexus</id>
            <!-- Enable snapshots for the built in central repo to direct -->
            <!-- all requests to nexus via the mirror -->
            <repositories>
                <repository>
                    <id>central</id>
                    <url>http://192.168.120.247:8081/nexus/content/repositories/public</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <url>http://192.168.120.247:8081/nexus/content/repositories/public</url>
                    <releases>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
        <!-- make the profile active all the time -->
        <activeProfile>nexus</activeProfile>
    </activeProfiles>

    <pluginGroups>
        <!-- define the sonatype plugin group, so the nexus plugins will work without 
            typing the groupId -->
        <pluginGroup>org.sonatype.plugins</pluginGroup>
    </pluginGroups>
</settings>
Jenkins在CentOS系统中安装与配置(初级篇)

 

其中localRepository节点表示私服中下载的jar包存放路径,根据实际存放的路径修改。
所有url节点中包含的地址:http://192.168.120.247:8081/nexus/content/repositories/public,表示nexus私服的地址,请根据实际的地址修改。
username、password节点表示登录nexus私服的用户名及密码。
4、安装jenkins
1) 复制到tomcat webapps目录

$ mv jenkins.war /home/gistech/tomcat/webapps

 

2) 配置环境变量
编辑.bash_profile文件
添加如下内容

JENKINS_HOME=$HOME/tomcat/webapps/jenkins

export JENKINS_HOME

 

使环境变量生效

source .bash_profile

 

3) 启动tomcat,使用http://localhost:8080/jenkins访问jenkins

三、jenkins的基本配置

 1、全局配置

单击首页左边的“系统管理”,进入“系统设置”,在这里对jenkins进行全局设置
1) JDK安装。如果没有读取出系统变量,就手动设置好别名和JAVA_HOME就可以了
2) Maven同理
Jenkins在CentOS系统中安装与配置(初级篇)
3) 配置管理员邮件通知
配置方式如下图:
Jenkins在CentOS系统中安装与配置(初级篇)
配置完成后可以点击"通过发送测试邮件测试配置"按钮进行测试。
2、创建job
1) 在页面中点击“新job”,输入任务名称,选择“构建一个maven2/3项目”,如下图:
Jenkins在CentOS系统中安装与配置(初级篇)
2) 点击ok按钮进入任务配置页面,首先配置项目的svn地址,如下图:
Jenkins在CentOS系统中安装与配置(初级篇)
3) 配置maven的pom文件位置,可以使用相对路径(相对于svn地址库中的位置),如下图:
Jenkins在CentOS系统中安装与配置(初级篇)
4) 配置maven编译参数,如下图所示不执行单元测试:
Jenkins在CentOS系统中安装与配置(初级篇)
关于maven的编译参数可参考Maven基本命令
3、邮件通知
构建邮件通知配置如下图,Recipients栏目中添加需要发送邮件通知的邮件地址。
Jenkins在CentOS系统中安装与配置(初级篇)
4、定时构建
构建触发器可以配置构建的时间,如果需要定时构建,可以选择 Build periodically,日程表参数解释如下:

  • 第一个参数代表的是分钟 minute,取值 0~59;
  • 第二个参数代表的是小时 hour,取值 0~23;
  • 第三个参数代表的是天 day,取值 1~31;
  • 第四个参数代表的是月 month,取值 1~12;
  • 最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。

如0 * * * * 表示的就是每个小时的第 0 分钟执行一次构建。
Jenkins在CentOS系统中安装与配置(初级篇)
5、版本更新构建
很多情况需要jenkins定时轮询版本库,只要有版本更新就触发构建,jenkins提供了Poll SCM支持版本更新构建,如上图,配置参数与定时构建的参数一样,如*/5 * * * *表示每隔5分钟轮询一次,检查版本库是否更新。