Jenkins介绍

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Jenkins,原名Hudson,2011年改为现在的名字,它 是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/

Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。

持续集成的概念

持续集成,Continuous integration ,简称CI。

随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

以我经过的项目(假设为A项目)为例进行描述。

首先,解释下集成。我们所有项目的代码都是托管在SVN服务器上。每个项目都要有若干个单元测试,并有一个所谓集成测试。所谓集成测试就是把所有的单元测试跑一遍以及其它一些能自动完成的测试。只有在本地电脑上通过了集成测试的代码才能上传到SVN服务器上,保证上传的代码没有问题。所以,集成指集成测试。

再说持续。不言而喻,就是指长期的对项目代码进行集成测试。既然是长期,那肯定是自动执行的,否则,人工执行则没有保证,而且耗人力。对此,我们有一台服务器,它会定期的从SVN中检出代码,并编译,然后跑集成测试。每次集成测试结果都会记录在案。完成这方面工作的就是下面要介绍的Jenkins软件。当然,它的功能远不止这些。在我们的项目中,执行这个工作的周期是1天。也就是,服务器每1天都会准时地对SVN服务器上的最新代码自动进行一次集成测试。

持续集成的特点

它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;

需要有专门的集成服务器来执行集成构建;

需要有代码托管工具支持;

持续集成的作用

保证团队开发人员提交代码的质量,减轻了软件发布时的压力;

持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;

Jenkins特点

  1. 易安装:仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
  2. 易配置:提供友好的GUI配置界面;
  3. 变更支持:Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
  4. 支持永久链接:用户是通过web来访问Jenkins的,而这些web页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
  5. 集成E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程中,干别的事情);
  6. JUnit/TestNG测试报告:也就是用以图表等形式提供详细的测试报表功能;
  7. 支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
  8. 文件指纹信息:Jenkins会保存哪次集成构建产生了哪些jars文件,哪一次集成构建使用了哪个版本的jars文件等构建记录;
  9. 支持第三方插件:使得 Jenkins 变得越来越强大;

两种启动方法

首先保证系统中已经安装了jdk,最好是jdk1.5以上。

第一种启动方法,切换到jenkins.war存放的目录,输入如下命令:

java -jar jenkins.war

然后在浏览器中(推荐用火狐)输入http://localhost:8080,localhost可以是本机的ip,也可以是计算机名。就可以打开jenkins

第二种方法是用tomcat打开

解压tomcat到某个目录,如/usr/local,进入tomcat下的/bin目录,启动tomcat

将jenkins.war文件放入tomcat下的webapps目录下,启动jenkins时,会自动在webapps目录下建立jenkins目录,所以在地址栏上需要输入的地址于上一种方法有点不一样

JDK介绍

注意:Jenkins 需要运行 Java 5以及以上的版本。

JDK解释 

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具

JDK包含组件

JDK包含的基本组件包括:

javac – 编译器,将源程序转成字节码

jar – 打包工具,将相关的类文件打包成一个文件

javadoc – 文档生成器,从源码注释中提取文档

jdb – debugger,查错工具

java – 运行编译后的java程序(.class后缀的)

appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。

Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。

Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。

Jconsole: Java进行系统调试和监控的工具

持续集成架构 持续集成构建工具_java

jenkins安装

实验环境介绍

[root@mycat ~]# cat /etc/redhat-release

CentOS release 6.8 (Final)

[root@tomcat ~]# uname -r

2.6.32-642.el6.x86_64

[root@mycat ~]# uname -m

x86_64

java环境安装

JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 

tar xf jdk-8u60-linux-x64.tar.gz -C /application/

ln -s /application/jdk1.8.0_60 /application/jdk

sed -i.ori '$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile

source /etc/profile

#→出现下面结果证明部署成功

[root@mycat ~]# java -version

java version "1.8.0_60"

Java(TM) SE Runtime Environment (build 1.8.0_60-b27)

Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

rpm包方式安装jdk

持续集成架构 持续集成构建工具_java_02

[root@mycat ~]# rpm -ivh jdk-8u144-linux-x64.rpm 
Preparing...                ########################################### [100%]
   1:jdk1.8.0_144           ########################################### [100%]
Unpacking JAR files...
    tools.jar...
    plugin.jar...
    javaws.jar...
    deploy.jar...
    rt.jar...
    jsse.jar...
    charsets.jar...
    localedata.jar...

下载jenkins包安装

可以去自己要的包

https://pkg.jenkins.io/redhat-stable/

wget https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.7.4-1.1.noarch.rpm

[root@mycat ~]# ll

total 244052

-rw-r--r-- 1 root root 181238643 2017-04-24 09:42 jdk-8u60-linux-x64.tar.gz

-rw-r--r-- 1 root root  68661466 2016-12-29 08:58 jenkins-2.7.4-1.1.noarch.rpm

[root@mycat ~]# rpm -ivh jenkins-2.7.4-1.1.noarch.rpm

warning: jenkins-2.7.4-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY

Preparing...                ########################################### [100%]

   1:jenkins                ########################################### [100%]

修改配置文件

如果是编译安装jdk需要修改配置文件的JENKINS_JAVA_CMD="/application/jdk/bin/java"这一行来指定jdk。rpm包安装则可以忽略这一步,但如果报错说找不到jdk还是需要指定这里

[root@mycat ~]# egrep -v "^$|#" /etc/sysconfig/jenkins 
JENKINS_HOME="/var/lib/jenkins"
JENKINS_JAVA_CMD="/application/jdk/bin/java"
JENKINS_USER="jenkins"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""

启动jenkins

[root@mycat ~]# /etc/init.d/jenkins start
Starting Jenkins                                           [  OK  ]
[root@mycat ~]# netstat -lntup|grep "java"
tcp        0      0 :::45227                    :::*                        LISTEN      1440/java           
tcp        0      0 :::8080                     :::*                        LISTEN      1440/java           
udp        0      0 :::5353                     :::*                                    1440/java           
udp        0      0 :::33848                    :::*                                    1440/java

 登陆页面密码

[root@mycat ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

7b9ab7fb008f400ea13a993ef4a161f5

持续集成架构 持续集成构建工具_持续集成架构_03

持续集成架构 持续集成构建工具_Jenkins_04

这里有两个选项,一个是自动安装插件,一个是选择安装插件。对于我们这样小白直接选择左边的一个就行了

持续集成架构 持续集成构建工具_持续集成架构_05

jenkins注意事项

备份

确保Jenkins数据能定期备份是分是非常重要的,特别是Jenkins主目录数据需要备份,这里与欧尼服务器配置的细节和构建版本和构建历史,这个目录应该经常自动备份,Jenkins本身相对并不重要,因为他能后很容易地重装而不影响你的构建环境。

持续集成架构 持续集成构建工具_Jenkins_06

升级重装

使用Linux软件包之一安装的Jenkins,可以使用好和服务器上其他系统软件包一样的过程升级Jenkins。

https://pkg.jenkins.io/redhat-stable/

yum localinstall -y

使用war包安装jenkins

快照还原环境,还原一个干净的系统做。自己安装好tomcat

jenkins war的下载位置

下载地址1:https://jenkins-ci.org/content/thank-you-downloading-windows-installer/

下载地址2:http://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.78/jenkins.war

tomcat安装:http://blog.oldboyedu.com/java-tomcat/

maven的下载地址:http://tomcat.apache.org/maven-plugin.html

Maven介绍

Maven 是个高级Java构建脚本框架,它使用标准目录结构和标准的生命周期,协定统一配置,并通过声明依赖管理来简化很多在ant中存在的典型低级脚本,在Maven中你的项目使用的标准,优化定义的生命周期--编译,测试,打包,部署等,每一个生命周期都一一对应着Maven插件,多种多样的Maven插件都使用标准目录结构,在最小化干预下执行任务所以可以通过其他插件覆盖默认插件来扩容Maven。

安装maven

[root@mycat ~]# tar xf apache-maven-3.3.9-bin.tar.gz -C /application/

[root@mycat ~]# ln -s /application/apache-maven-3.3.9 /application/maven

[root@mycat ~]# sed -i.ori2 '$a export MAVEN_HOME=/application/maven\nexport PATH="$MAVEN_HOME/bin:$PATH"' /etc/profile

[root@mycat ~]# source /etc/profile

[root@mycat ~]# wget http://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.78/jenkins.war

[root@mycat ~]# cp jenkins.war /application/tomcat/webapps/

启动tomcat

[root@mycat ~]# /application/tomcat/bin/startup.sh

Using CATALINA_BASE:   /application/tomcat

Using CATALINA_HOME:   /application/tomcat

Using CATALINA_TMPDIR: /application/tomcat/temp

Using JRE_HOME:        /application/jdk

Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar

Tomcat started.

[root@mycat ~]# ll /application/tomcat/webapps/

total 71548

drwxr-xr-x 14 root root     4096 2017-09-01 19:22 docs

drwxr-xr-x  6 root root     4096 2017-09-01 19:22 examples

drwxr-xr-x  5 root root     4096 2017-09-01 19:22 host-manager

drwxr-xr-x 10 root root     4096 2017-09-01 19:41 jenkins

-rw-r--r--  1 root root 73240530 2017-09-01 19:40 jenkins.war

drwxr-xr-x  5 root root     4096 2017-09-01 19:22 manager

drwxr-xr-x  3 root root     4096 2017-09-01 19:22 ROOT

访问测试

http://ip:8080/jenkins/

密码在用户家目录下

 

[root@mycat ~]# cat /root/.jenkins/secrets/initialAdminPassword

73f766dc08344f95acb5240bda117f0a

 

持续集成架构 持续集成构建工具_java_07

作者:杨灏