Jenkins​​,是从​​Hudson​ fork出的一个开发分支,因与​​Oracle​ Hudson商标纠纷改名为Jenkins(​​详见​​),Jenkins是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:软件版本发布/测试的持续集成、外部调用执行工作的监控等。


一、准备环境

1、(可选) 卸载已有的open jdk,安装最新版本的java jdk,为后续集成maven服务做准备

# rpm -qa | grep jdk
java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686
# yum -y remove 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 安装

##下载repo源
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
#sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

##安装
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
#sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum install jenkins


3、启动Jenkins  

使Jenkins能够以服务方式启动

  • systemctl

systemctl start jenkins
systemctl status jenkins
systemctl enable jenkins

  • service

sudo chkconfig jenkins on
sudo service jenkins start/stop/restart

报错1:

  输入指令 ​​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: invalid Java version: openjdk version "1.8.0_312"

则说明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
"

报错2:

Oct 27 10:41:06 Prometheus jenkins: jenkins: invalid Java version: openjdk version "1.8.0_312"
Oct 27 10:41:06 Prometheus jenkins: OpenJDK Runtime Environment (build 1.8.0_312-b07)
Oct 27 10:41:06 Prometheus jenkins: OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
Oct 27 10:41:06 Prometheus systemd: jenkins.service: main process exited, code=exited, status=1/FAILURE
Oct 27 10:41:06 Prometheus systemd: Failed to start Jenkins Continuous Integration Server.
Oct 27 10:41:06 Prometheus systemd: Unit jenkins.service entered failed state.
Oct 27 10:41:06 Prometheus systemd: jenkins.service failed.


二、 配置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、修改日志路径

mv /var/log/jenkins /data/logs/
sed -i 's/var\/log\/jenkins/data\/logs\/jenkins/g' /etc/init.d/jenkins


4、修改目录的相应权限

sudo chown -R jenkins:jenkins /home/jenkins
sudo chown -R jenkins:jenkins /data/logs/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等

如果联网失败: jenkins 实例似乎已离线问题

解决方法:https://blog.51cto.com/qiangsh/1566595


3、 Jenkins 验证

在浏览器里,输入网址: ​http://{jenkins_host}:8080/​​显示下面界面:

Linux 搭建 Jenkins_Jenkins

  安装所需要的插件(根据需要自行选择),如 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

四、Jenkins升级

1、定位jenkins.war文件的安装目录

ps aux |grep jenkins

Linux 搭建 Jenkins_Jenkins_02

2、如果是默认安装的话,文件目录应该为:/usr/lib/jenkins

cd /usr/lib/jenkins
mv jenkins.war jenkins.war-bak
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war


3、重启服务

/etc/init.d/jenkins restart


五、相关插件安装

  1. 插件安装方法为,进入系统管理--->插件管理,在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/>