Jenkins学习笔记

Jenkins 是一款开源持续集成工具,用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置、邮件功能使用,以此演示 Java 项目(SVN+Maven)的构建等常用操作等。

1.Jenkins安装

1.1 安装 JDK

Jenkins是基于java开发的,所以需要安装JDK,下载JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html
这里以jdk1.8为例子,设置jdk的环境变量:

vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export PATH=${JAVA_HOME}/bin:$PATH

1.2 安装Maven

构建项目是基于Maven,所以需要安装Maven。
下载maven:http://maven.apache.org/download.cgi
解压压缩包重命名为”maven“,复制到:/usr/local/
配置环境变量:

vi /etc/profile
export MAVEN_HOME=/usr/local/maven
export PATH=${MAVEN_HOME}/bin:$PATH

1.3 安装 Jenkins

下载Jenkins放到usr/local/目录下,地址:https://pkg.jenkins.io/redhat-stable/
安装Jenkins公钥:sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins.io.key
cd到usr/local/目录,执行命令安装jenkins:sudo yum -y install jenkins-*.noarch.rpm
Jenkins的安装路径默认是在:/var/lib/jenkins
修改配置文件:

sudo vi /etc/sysconfig/jenkins
JENKINS_USER="root" ## 原值 "jenkins" 必须修改,否则权限不足
JENKINS_PORT="8080"

启动:

sudo systemctl enable jenkins
sudo systemctl restart jenkins

这时候你可能会发现启动失败,提示:

Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.

那我们使用命令来查看下原因:
systemctl status jenkins.service

查看启动日志,发现错误:
imagepng

说明jenkins在/usr/bin/java找不到对应的java命令,编辑文件,把本地的jdk路径加上:

vi /etc/rc.d/init.d/jenkins:

candidates="
/usr/local/jdk1.8/bin/java
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"

接下来再次启动Jenkins:sudo systemctl start jenkins
这时候会报错误:
Warning: jenkins.service changed on disk. Run 'systemctl daemon-reload' to reload units.

解决方法:systemctl daemon-reload

然后再次启动:systemctl restart jenkins

访问Jenkins之前,先修改一下connectionCheckUrl,否则Jenkins启动一直显示Jenkins正在启动,请稍后…
修改方法:
到jenkins的目录(/var/lib/jenkins)下找到update/default.json,把 “connectionCheckUrl”:“http://www.google.com/” 改为 “connectionCheckUrl”:“http://www.baidu.com/”。

再次启动:systemctl start jenkins

在浏览器输入:http://localhost:8080

Jenkins的默认的用户名是admin,密码在:
cat /var/lib/jenkins/secrets/initialAdminPassword可以找到。

登录后的界面:

imagepng

这里是让安装插件,现在先不安装,直接点击右上角关掉。这个时候如果界面是空白的,需要重启一下Jenkins,再访问就正常了。

1.4修改密码

点击 系统管理–>管理用户–>点击admin的右边的设置图标进去修改密码。

imagepng

2.Jenkins卸载

sudo systemctl stop jenkins
sudo systemctl disable jenkins
sudo yum -y remove jenkins
sudo rm -rf /var/{lib,log,cache}/jenkins /usr/lib/jenkins /root/.jenkins
sudo rm -rf `sudo find /{etc,var,run} -name "jenkins*"`

3.工具设置

在系统点击 系统管理–>全局工具配置:
JDK 下不勾选“自动安装”,指定别名=JDK1.8, JAVA_HOME=/usr/local/jdk1.8
Maven 下不勾选“自动安装”,指定别名=apache-maven-3.5.4, MAVEN_HOME=/usr/local/apache-maven-3.5.4
点击 Save 按钮。
重启 Jenkins 后生效:sudo systemctl restart jenkins

imagepng

4.插件安装

在系统点击 系统管理–>插件管理–>可选插件:

imagepng

勾选需要安装的插件后点击”直接安装“,现在安装几个必备插件,
* Subversion Plug-in ## 版本管理 SVN 的插件
* Maven Integration plugin ## 项目构建 Maven 的插件
无需重启 Jenkins 插件即生效。如遇失败可重试或离线安装。
安装插件过程出错就多安装几次,或者开启VPN进行安装。

5.构建项目

5.1.创建新项目

主页:点击“创建一个新项目”;
项目类型:输入任务名称 test,类型选择“构建一个Maven项目”(如果没有此项可选,请检查插件“Maven Integration plugin”是否已安装);

 

imagepng

5.1.源码管理

在创建项目后,自动跳转到配置页面,在配置页面点击”源码管理“,这里指定我们的svn的源码仓库。
选择“Subversion”(如果没有此项可选,请检查插件“Subversion Plug-in”是否已安装),
仓库URL可以指定 svn/http/https 之一,这里指定 svn://10.211.55.6/test ,这个是我的一个测试项目,大家自行写上自己的项目svn。
Credentials: 添加 SVN 用户名密码,点击Add,再点击Jenkins,在打开的窗口输入svn的用户名密码,保存后并从下拉列表中选择它,这里我的是calon/******。

imagepng

5.2.构建触发器

5.2.1.手动构建

imagepng

如上图,Jenkins可以通过项目里点击“立即构建”来进行手动构建项目,会在Build History里列出构建历史,有进度的说明当前正在构建,点击进去查看详情:
imagepng
如上图,可以点击控制台输入正在构建的进度等。

Jenkins的触发构建有定时构建、其他工程构建后触发、触发远程构建 (例如,使用脚本)、轮询 SCM等。

5.2.2.定时构建

imagepng

定时触发的格式是五个参数:* * * * *
第一个参数代表的是分钟 minute,取值 0~59;
第二个参数代表的是小时 hour,取值 0~23;
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
所以 0 * * * * 表示的就是每个小时的第 0 分钟执行构建。

每隔5分钟构建一次
H/5 * * * *
每两小时构建一次
H H/2 * * *
每天中午12时定时构建一次
0 12 * * *
每天下午18时定时构建一次
0 18 * * *

5.2.3.轮询 SCM构建

语法和定时构建一样,轮询 SCM和定时构建的区别就是:
定时构建:不管SVN或Git中数据有无变化,均执行定时化的构建任务
轮询SCM:只有在SVN或Git中数据有更新,则执行构建任务,一般使用这种就可以了。

5.2.4.其他工程构建后触发

imagepng
这种触发条件是依赖其他项目的构建情况进行构建,输入依赖的项目名称,还有触发的时机。

5.2.5.触发远程构建 (例如,使用脚本)

imagepng

触发远程构建是什么意思呢?通过上图可以看到,意思是通过复制这个URL地址,在别的机器上打开这个URL就相当于给这个Jenkins服务器发送了一个构建请求,第一个参数JENKINS_URL,这里我们写IP地址或者机器hostname,第二个参数TOKEN_NAME就是你在身份验证令牌文本输入框输入的值。这里我们把令牌设置成123456,然后我就在我机器的另外一个浏览器来模拟远程构建,这个时候我的远程构建地址就是这样的:http://localhost:8080/job/Test1/build?token=123456。到后台就可以看到项目开始在构建了。

5.3.Build 设置

Root POM: 指定 pom.xml 相对路径
Goals and options: 指定 mvn 执行目标或选项,设置为 package -Dmaven.test.skip=true

Post Steps 设置

定制构建后的操作,通常选择“Run only if build succeeds”,支持 shell 等脚本;

6.开启邮件报告

Jenkins提供邮件发送的插件,原理与邮件客户端一样:把发件人的邮箱帐号、密码、SMTP服务器告诉 Jenkins,Jenkins 需要时使用该帐号向指定的收件人发送邮件报告。

6.1.插件安装

Jenkins 自带邮件插件(Mailer Plugin)的功能很弱且无法自定制,
需要安装扩展邮件插件: Email Extension Plugin。在插件管理里搜索Email Extension进行安装。

6.2.邮件参数设置

在系统管理->系统设置:

imagepng
imagepng
imagepng
imagepng
imagepng
imagepng

6.2.1.设置管理员邮箱

进入:系统管理->系统设置->Jenkins Location
系统管理员邮件地址 设为 xxx@163.com

6.2.2 设置发件人帐号

进入:系统管理->系统设置->Extended E-mail Notification
“SMTP server” 设为 smtp.163.com
“Default user E-mail suffix” 设为 @163.com
“Use SMTP Authentication” 选中
“User Name” = xxx@163.com(必须与管理员邮箱相同)
“Password” = **
“Use SSL” = on
“SMTP port” = 465
“Charset” = UTF-8
“Default Content Type” = HTML (text/html)

6.2.3.设置邮箱模板

Default Subject: 构建通知:BUILD_NUMBER - $BUILD_STATUS
Default Content:

本邮件由系统自动发出,请勿回复!<br/>
<h2><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></h2> 
<h4><font color="#0B610B">构建信息</font></h4>
<hr size="2" width="100%" />
<ul>    
<li>项目名称:${PROJECT_NAME} - #${BUILD_NUMBER}</li>    
<li>触发原因:${CAUSE}</li>    
<li>项目 URL:<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
<li>构建 URL:<a href="${BUILD_URL}">${BUILD_URL}</a></li>    
<li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
<li>工作目录:<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
</ul> 
<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />$FAILED_TESTS<br/> 
<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font>
</h4>
<hr size="2" width="100%" />
<ul>${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/> 
<h4><font color="#0B610B">代码检查</font></h4>
<hr size="2" width="100%" />
FindBugs:<a href="${BUILD_URL}findbugsResult">${BUILD_URL}findbugsResult</a><br/>
CheckStyle:<a href="${BUILD_URL}checkstyleResult">${BUILD_URL}checkstyleResult</a><br/>
PMD:<a href="${BUILD_URL}pmdResult">${BUILD_URL}pmdResult</a><br/>

6.2.4.设置邮件触发时机

点击 Default Triggers,比较好的方案是选中两项:
- Failure - Any ## 可定义“编译失败时”才向哪些人员发邮件(比如最近代码提交者)
- Success ## 可定义“构建成功时”才向哪些人员发邮件(比如所有产品关注者)

6.3.项目设置中启用邮件

在首页点击test项目进去,点击左边的配置,再选构建后操作步骤: 增加 Editable Email Notification(来自插件 Email Extension Plugin)。下图设置的效果是:
imagepng
添加Editable Email Notificatoin后,点击Advanced Settings....
- 构建失败时,向上次成功构建之后导致构建失败的 SVN 提交的人员发送邮件;
imagepng
imagepng

  • 构建成功时,向上次成功构建之后有 SVN 提交的人员、还有“Project Recipient List”中的人员发送邮件;
    imagepng
    imagepng







 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值