Jenkins,是从Hudson fork出的一个开发分支,因与Oracle Hudson商标纠纷改名为Jenkins(详见),Jenkins是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:软件版本发布/测试的持续集成、外部调用执行工作的监控等。
一、 准备环境
1、(可选) 卸载已有的open jdk,安装最新版本的java jdk,为后续集成maven服务做准备
(1)rpm -qa | grep jdk
java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686
(2)yum -y java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686
remove java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686
安装JAVA, 请见 http://qiangsh.blog.51cto.com/3510397/1771748
安装Maven,请见 http://qiangsh.blog.51cto.com/3510397/1771831
2、 Jenkins 安装
(1) sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
(2) sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
(3) yum install jenkins
使Jenkins能够以服务方式启动
(1)sudo chkconfig jenkins on
(2)sudo service jenkins start/stop/restart
3、启动Jenkins
输入指令 sudo service jenkins start
,如果出现类似如下的报错:
Starting Jenkins bash: /usr/bin/java: 没有那个文件或目录
或者
Starting Jenkins Jenkins requires Java7 or later, but you are running 1.5.0 from /usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre
则说明jenkins没有找到java安装目录,若此时已经卸载了openjdk,安装了新版本的全java包,则可以通过修改init.d中配置文件解决,方法如下:
vi /etc/init.d/jenkins
找到candidates,修改如下,将你安装的java所在路径写到第一个候选位置(最前面)即可将/usr/bin/java写到最前。
candidates="
/usr/bin/java
/usr/java/jdk1.8.0_131/bin/java
/etc/alternatives/java
/usr/lib/jvm/java-1.6.0/bin/java
/usr/lib/jvm/jre-1.6.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
"
二、 配置Jenkins
1、创建软连接
mkdir -p /home/jenkins/
ln -s /var/lib/jenkins /home/jenkins/.jenkins
2、更改Jenkins的默认目录,用户,端口
vi /etc/sysconfig/jenkins
JENKINS_HOME="/home/jenkins/.jenkins"
JENKINS_USER="jenkins",执行用户更改为jenkins用户
JENKINS_PORT="8080",默认端口8080
3、修改目录的相应权限
sudo chown -R jenkins:jenkins /home/jenkins
sudo chown -R jenkins:jenkins /var/log/jenkins
sudo chown -R jenkins:jenkins /var/lib/jenkins
sudo chown -R jenkins:jenkins /var/cache/jenkins
4、安装部分Jenkins插件
系统管理 --> 管理插件 --> 可选插件;
安装所需要的插件(根据需要自行选择),如 GitBucket Plugin、 FindBugs Plug-in 、Cobertura Plugin 、 Violations Plugin 、Email Extension Plugin等
如果联网失败,请参考:http://blog.csdn.net/qq_28719059/article/details/79071906
3、 Jenkins 验证
在浏览器里,输入网址: http://{jenkins_host}:8080/显示下面界面:
安装所需要的插件(根据需要自行选择),如 GitBucket Plugin、 FindBugs Plug-in 、Cobertura Plugin 、 Violations Plugin 、Email Extension Plugin等
三、 配置nginx反向代理
1、在nginx配置目录/usr/local/nginx/conf/vhost/目录下新建配置文件jenkins.conf,配置文件内容如下
server { listen 80; server_name jenkins.yourhost.com; #access_log /var/log/jenkins.access.log main; #error_log /var/log/jenkins.error.log ; client_max_body_size 60M; client_body_buffer_size 512k; location / { port_in_redirect on; proxy_pass http://127.0.0.1:8080$request_uri; proxy_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
2、修改/etc/hosts,在末尾新增一行 :
127.0.0.1 jenkins.yourhost.com
3、重启nginx,
service nginx restart
四、相关插件安装
插件安装方法为,进入系统管理--->插件管理,在Available的Tab下勾选需要的插件直接安装即可。 一些常用的插件如下。
插件名 | 说明 |
---|---|
Git plugin | jenkins的git 集成工具,拉取源代码 |
GitBuckit plugin | jenkins的gitbuckit集成工具,拉取源代码(提供gitbucket的webhook配置,使gitbucket可以通过提交代码触发build,webhook地址为http://[jenkins_host]/gitbucket-webhook/, 将其写入项目远程仓库的settings->service hooks 里即可) |
Cobertura Plugin | 显示代码测试覆盖率报表,如java 、python等 |
Violations Plugin | 用来展示Python静态代码审查报表,支持pylint、jslint等 |
Email Extension Plugin | Jenkins自定义邮件插件 。 |
Junit Plugin | 用来展示生成的单元测试报表,支持一切单测框架,如junit、nosetests等 |
Maven Integration plugin | maven项目管理工具。一些maven代码质量管理命令:mvn sonar:sonar(单测结果,覆盖率)、findbugs:findbugs(静态代码检查) 、checkstyles:checkstyles(编写规范,潜在问题) |
Description Setter Plugin | 为每次build设置说明文字。通过正则表达式来匹配log里每行的输出,将符合正则表达式的部分显示在说明中。 |
Email Extension Plugin 的设置参考
Default Subject: 构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! Default Content: <hr/> (本邮件是程序自动下发的,请勿回复!)<br/><hr/> 项目名称:$PROJECT_NAME<br/><hr/> 构建编号:$BUILD_NUMBER<br/><hr/> git版本号:${GIT_REVISION}<br/><hr/> 构建状态:$BUILD_STATUS<br/><hr/> 触发原因:${CAUSE}<br/><hr/> 构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/> 构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/> 失败单测:${FAILED_TESTS} <br/><hr/> 变更集:${JELLY_SCRIPT,template="html"}<br/> <hr/>