案例:最近打算为公司搭建Jenkins+maven+svn+tomcat持续集成环境。此博客先大致介绍Jenkins,以及各种安装配置方式,后续则持续介绍其具体组合svn,GItLab,maven,Ant,加其它插件的使用方法。


Jenkins:

1.1)简介:

开源项目,一个可扩展的持续集成引擎提供了一种易于使用的持续集成系统,能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。还做到持续编译和发布软件项目,这使得开发者很容易把他们的改动集成到项目中,让用户能更加便利的获取编译和测试版本等。

1.2)作用:

1.2.1)持续、自动地构建/测试软件项目。

1.2.2) 监控一些定时执行的任务。

1.3)特性:

1.3.1)易于安装-只要把 jenkins.war 部署到 servlet 容器,不需要数据库支持。

1.3.2)易于配置-所有配置都是通过其提供的 web 界面实现。

1.3.3)集成 RSS/E-mail 通过 RSS 发布构建结果或当构建完成时通过 e-mail 通知。

1.3.4)生成 JUnit/TestNG 测试报告。

1.3.5)分布式构建支持 Jenkins 能够让多台计算机一起构建/测试。

1.3.6)文件识别:Jenkins 能够跟踪哪次构建生成哪些 jar,哪次构建使用哪个版本的 jar 等。

1.3.7)插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。

1.4)常用组合

1.4.1)Jenkins+maven(Ant)+svn+tomcat+其它插件

1.4.2)Jenkins+maven(Ant)+GItLab+tomcat+其它插件

......

1.5)安装(两种方式)

1.5.1)yum方式安装

官方文档:

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions

1.5.1.1)安装java和tomcat(分别用的tomcat7和jdk1.7版本)

[root@node5 ~]# java1.7  -version
java version "1.7.x"
Java(TM) SE Runtime Environment (build 1.7.x)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)
[root@node5 ~]# cd /usr/local/tomcat-7.x/bin/
[root@node5 bin]# ./version.sh 
Using CATALINA_BASE:   /usr/local/tomcat-7.x
Using CATALINA_HOME:   /usr/local/tomcat-7.x
Using CATALINA_TMPDIR: /usr/local/tomcat-7.x/temp
Using JRE_HOME:        /usr/local/jdk1.7.x
Using CLASSPATH:       /usr/local/tomcat-7.x/bin/bootstrap.jar:/usr/local/tomcat-7.x/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.x
Server built:   May 19 2014 10:26:15
Server number:  7.x
OS Name:        Linux
OS Version:     2.6.32-504.el6.x86_64
Architecture:   amd64
JVM Version:    1.7x
JVM Vendor:     Oracle Corporation
[root@node5 bin]#

1.5.1.2)yum安装jenkins

wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins -y

Jenkins+maven+svn+tomcat(1)_Jenkins+maven+svn+to

1.5.1.3)防止Jenkins内存溢出

vi  /etc/sysconfig/jenkins
#JENKINS_USER="root"
#JENKINS_PORT="8080"
JENKINS_JAVA_OPTIONS="-Xms1024m -Xmx1024m -XX:PermSize=512M -XX:PermSize=1024M"

1.5.1.4)开启Jenkins服务

Jenkins+maven+svn+tomcat(1)_Jenkins+maven+svn+to_02

1.5.1.5)访问:

http://IP:8080/(根据自己定义的ip和端口)

默认密码可以在日志看到,或者指定文件里。

/var/lib/jenkins/secrets/initialAdminPassword
[root@node5 ~]# ll /var/log/jenkins/jenkins.log 
-rw-r--r-- 1 jenkins jenkins 114057 8月   9 23:37 /var/log/jenkins/jenkins.log
[root@node5 ~]#

Jenkins+maven+svn+tomcat(1)_Jenkins+maven+svn+to_03

1.5.1.6)安装完成界面:

Jenkins+maven+svn+tomcat(1)_Jenkins+maven+svn+to_04

1.5.2)War包形式(推荐)

1.5.2.1)官网https://jenkins.io/ (建议生产选择TLS稳定版)

Jenkins+maven+svn+tomcat(1)_Jenkins+maven+svn+to_05

1.5.2.2)上传到站点下,重启tomcat(java  -jar jenkins.war也可以)

[root@node5 webapps]# pwd
/usr/local/tomcat-7.x/webapps
[root@node5 webapps]# ll
总用量 68160
drwxr-xr-x 14 root root     4096 8月   8 13:05 docs
drwxr-xr-x  7 root root     4096 8月   8 13:05 examples
drwxr-xr-x  5 root root     4096 8月   8 13:05 host-manager
drwxr-xr-x 10 root root     4096 8月   8 16:58 jenkins
-rw-r--r--  1 root root 69770196 12月 21 2016 jenkins.war
drwxr-xr-x  5 root root     4096 8月   8 13:05 manager
drwxr-xr-x  3 root root     4096 8月   8 13:05 ROOT
[root@node5 webapps]# killall -9 java
[root@node5 webapps]# /etc/init.d/tomcat-7.x start
Using CATALINA_BASE:   /usr/local/tomcat-7.x
Using CATALINA_HOME:   /usr/local/tomcat-7.x
Using CATALINA_TMPDIR: /usr/local/tomcat-7.x/temp
Using JRE_HOME:        /usr/local/jdk1.7.x
Using CLASSPATH:       /usr/local/tomcat-7.x/bin/bootstrap.jar:/usr/local/tomcat-7.x/bin/tomcat-juli.jar
Tomcat started.
[root@node5 webapps]#

1.5.3)访问:

http://IP/jenkins

Jenkins+maven+svn+tomcat(1)_Jenkins+maven+svn+to_06

1.5.3.1)根据提示找密码

[root@node5 .jenkins]# cd secrets
[root@node5 secrets]# ls
filepath-filters.d    jenkins.model.Jenkins.crumbSalt         org.jenkinsci.main.modules.instance_identity.InstanceIdentity.KEY
hudson.util.Secret    jenkins.security.ApiTokenProperty.seed  slave-to-master-security-kill-switch
initialAdminPassword  master.key                              whitelisted-callables.d
[root@node5 secrets]# cat initialAdminPassword 
58b779da51484504a8649de0aada616e
[root@node5 secrets]#

1.5.3.2)根据提示安装插件(可根据建议,也可以自定义安装插件,最好先跳过插件,需要什么安装什么),这里我就按照建议的来了。

Jenkins+maven+svn+tomcat(1)_Jenkins+maven+svn+to_07

提示,会有个别插件不能按照,暂时跳过即可。建议自己要安装的插件

Maven Project Plugin,Subversion Plugin,Checkstyle Plugin,Findbugs Plugin

PMD Plugin,Warnings Plugin等。

1.6)svn准备

[root@node3 ~]# ps aux|grep svn|grep -v grep
root       1217  0.0  0.0 152864   760 ?        Ss   14:58   0:00 /usr/bin/svnserve -d -r /usr/local/svndata --listen-port 9000
[root@node3 ~]#

1.7)maven安装配置

1.7.1)简介

http://maven.apache.org/

Jenkins支持FreeStyle工程和Maven工程。

maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性,利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。

[root@node3 ~]# tar xf apache-maven-3.3.9-bin.tar.gz 
[root@node3 ~]# mv apache-maven-3.3.9 /usr/local/maven
[root@node5 ~]# cat /etc/profile.d/maven 
export  MAVEN_HOME=/usr/local/maven/
export  PATH=$PATH:$MAVEN_HOME/bin
export  MAVEN_HOME
[root@node3 ~]# source  /etc/profile.d/maven 
[root@node5 ~]# mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.7.x, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.x/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-504.el6.x86_64", arch: "amd64", family: "unix"
[root@node5 ~]#

到此,基本环境搭建完成,后续将介绍Jenkins配置和插件的整合使用。