Ubuntu 搭建Jenkins服务器以及配置邮件工程全解

来源:互联网 发布:剑三正太脸型数据网盘 编辑:程序博客网 时间:2024/06/05 23:51

1. 说明

持续集成倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。例如,开发团队正在开发一个项目,采用Jenkis可以每天集成该项目,对项目进行自动化编译、发布和测试。并且将每一次编译后的结果,通过邮件通知开发团队的每一位成员。本文目的:提供ubuntu如何搭建jenkins服务器、Jenkins邮件配置、工程配置、脚本编辑等详细解说。

2. 搭建环境

ubuntu 版本:16.04
jenkins 版本:jenkins_2.19.3_all.deb

3、安装步骤

3.1 搭建安卓环境

由于jenkins 是基于JAVA开发的,所以安装Jenkins之前,需要先安装java包。在ubuntu系统下,直接运行命令安装java包。

sudo apt-get install openjdk-7-jdk 

3.2 安装jenkins

安装软件有两种方法:
1、修改ubuntu软件源,增加jenkins链接进行安装;
2、直接下载jenkins的软件包,进行安装。
jenkins官网的ubuntu版本和安装操作,可以考:https://pkg.jenkins.io/debian-stable/

3.2.1 在线安装jenkins

(1)增加软件key
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
(2)增加软件源
deb https://pkg.jenkins.io/debian-stable binary/
如果此命令不能成功,请手动增加软件源。直接编辑软件源文件。
sudo vi /etc/ sources.list
在文件的最末尾,增加一行
deb https://pkg.jenkins.io/debian-stable binary/
(3)更新并安装
sudo apt-get update
sudo apt-get install jenkins
备注:此方法安装的是最新的jenkins版本。由于下载jenkins非常缓慢,所以安装时间比较漫长。

3.2.2 直接下载安装jenkins

在jenkins官网下载需要的版本软件:https://pkg.jenkins.io/debian-stable/ ,本次下载安装的版本为jenkins_2.19.3,发布日期为2016/11/16。
下载完毕之后,直接运行命令安装。

sudo dpkg -i jenkins_2.19.3_all.deb
备注:如果安装的版本失败,并导致无法再次安装任何的软件,每次安装都提示jenkins的问题。
You might want to run 'apt-get -f install' to correct these:The following packages have unmet dependencies: jenkins : Depends: daemon but it is not going to be installedE: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
请直接编译文件/var/lib/dpkg/status,删除掉含有Jenkins部分的内容,即可让ubuntu安装功能恢复正常。遇到此问题,是由于jenkins的压缩包,没有配置导致的,可以运行命令强制安装。
    sudo dpkg -i jenkins_2.19.3_all.deb    sudo dpkg --purge jenkins_2.19.3_all.deb    sudo apt-get -f install
安装完毕之后,启动Jenkins服务:
sudo service jenkins start
如果提示OK,则说明安装并启动成功。*Starting Jenkins Continuous Integration Server jenkins    [ OK ]

3.3 安装注意事项:

如果jenkins服务启动不成功,可能有两个情况。1、防火墙开启了,默认不允许jenkins服务运行。解决方案:(1)直接关闭防火墙 
sudo ufw disable
或者添加jenkins服务
sudo ufw allow 8080
2、jenkins默认的服务器端口8080与系统的其他服务端口有冲突,有其他服务已经使用了8080端口(8090端口没有被占用)。
sudo netstat -ap | grep 8080

如果发现8080有被占用,则需要修改jenkins端口,以修改为8090为例。
此时需要修改jenkins的端口号,修改方法如下:
(1)修改/etc/init.d/jenkins的端口号

sudo vi /etc/init.d/jenkins

修改do_start函数的check_tcp_port命令,端口号从8080换成8090

  # Verify that the jenkins port is not already in use, winstone does not exit    # even for BindException    check_tcp_port "http" "$HTTP_PORT" "8090" "$HTTP_HOST" "0.0.0.0" || return 2

(2)修改/etc/default/jenkins文件

sudo vi /etc/default/jenkins

将默认的8080端口改成8090

# port for HTTP connector (default 8080; disable with -1)# HTTP_PORT=8080HTTP_PORT=8090

修改完成之后,重启jenkins即可。

sudo service jenkins restart

3.4 Jenkins初始配置

3.4.1 初次登录

安装完jenkins之后,在浏览器直接输入IP:8080即可登录jenkins。例如ubuntu的IP地址为172.16.163.80,则直接浏览器输入172.16.163.80:8080,进入首次登录页面(如图3-1所示)。
图3-1 首次登录jenkins
图3-1 首次登录jenkins

首次登录的初始密码,如图3-1中的红色方框所示,直接打开该文件即可获取初始密码。

3.4.2 插件安装

登录之后,进入安装插件界面,如图3-2所示。如果没有特别的需求,直接选择“安装推荐插件(Install suggested plugins)”即可。
图3-2 安装插件方式
图3-2 安装插件方式

选择之后,进入插件安装界面。进行安装的插件,如图3-3所示。
图3-3 插件安装列表
图3-3 插件安装列表
如果安装的过程中,由于网络或者插件的链接地址不是最新,所以导致安装失败。

图3-4 插件安装失败
图3-4 插件安装失败
遇到这个问题,插件安装结束之后(图3-4 Getting Gtarted进度显示100%),直接刷新网页进入jenkins。进入之后,再去另外进行安装。
安装插件完成或者失败,重启网页之后,都可以进入页面。首次进入,可以新建管理员账号和密码。
图3-5 设置管理官账号和密码
图3-5 设置管理官账号和密码
设置完成之后,登录进去,进入jenkins的首页,如图3-6所示。可以在Windows下或者ubuntu下的浏览器进行登录,在windows下的登录,界面自动切换成中文,ubuntu登录,界面为英文。
图3-6 jenkins首页
图3-6 jenkins首页

3.3.3 插件管理

在图3-6中,选择系统管里。然后在图3-7中系统管理中,选择管理插件,即可进入插件的操作。

图3-7 系统管理
图3-7 系统管理
进入管理插件之后,可以根据用户需要,自行安装和删除插件,如图3-8所示。由于需要jenkins的发送邮件功能,故选择邮件的插件“Email Extension Template Plugin”。
图3-8中的“过滤”,用于搜索需要的插件名称。右下角的“立即获取”,用于检查插件是否最新,一般不需要选择。勾选中“Email Extension Template Plugin”之后,选择左下角的“直接安装”,进行插件安装。
图3-8 插件安装
图3-8 插件安装
如此一来,基本的jenkins服务器在ubuntu上安装,已经完成。
系统默认将jenkins安装在/var/lib/jenkins 目录下,配置和操作,都在该目录下,有兴趣可以自己到该目录查看。

4 系统配置

进入jenkins网页之后,在“系统管理”–>“系统设置”,可以设置系统的全局配置。当然,也可以直接在浏览器输入“http://172.16.163.80:8080/configure”进入到该配置页面。
图4-1 系统设置
图4-1 系统设置

4.1 Timestamper配置

在进入系统设置界面之后,里面有“Timestamper”,用于设置Timestamper格式。
图4-2  Timestamper配置
图4-2 Timestamper配置

4.2 邮件配置

1、首先需要配置jenkins的管理员邮箱账号,邮箱账号名字随意。
图4-3 配置管理员邮箱账号
图4-3 配置管理员邮箱账号

2、配置邮件通知
在“邮件通知”中,选择高级,如图4-4所示。
图4-4 邮件通知
图4-4 邮件通知

邮件配置只需要配置“SMTP服务器”和“字符集”。其中SMTP服务器为邮件的服务器,字符集配置为UTF-8,是为了让邮件支持中文,不会出现中文乱码。
配置完成之后,勾选“通过发送测试邮件测试配置”,填写一个接收邮件的账号,然后点击右下角的“Test configuration”,如果提示“ Email was successfully sent”并且成功收到邮件,则说明邮件配置正确。

特别注意:Jenkins的邮件配置只需要配置这些就可以发送邮件,如果用户在“Extended E-mail Notification”中配置了邮箱账号和密码,反而会导致邮件无法发送,切记!

图4-5 邮件测试配置
图4-5 邮件测试配置

4.3 拓展邮件通知配置

在“Extended E-mail Notification”中,进行邮件的发送、抄送、邮件主题、正文配置。这些配置完成之后,都会被系统保存为默认的邮件参数。配置如图4-6所示。
图4-6 Extended E-mail Notification 配置
图4-6 Extended E-mail Notification 配置

说明:
1、SMTP server,用于配置SMTP服务器,保证邮件发送成功。
2、Charset,配置为UTF-8,支持中文。
3、Default Content Type,选择HTML格式,可以方便编辑邮件正文,插入html代码。
4、Default Recipients,默认接收者,如果需要发送至多个邮箱,两个邮箱账号之间采用逗号” , “隔开。
5、Default Content,邮件正文,采用html语言编写。

4.4 SVN配置

根据自己ubuntu系统的svn版本,选择jenkins的svn版本。如本人的ubuntu安装版本为V1.8,则配置为V1.8。如果两者版本不兼容,则在jenkins运行svn命令时,会提示版本不对,导致无法执行svn命令,如svn info命令。
图4-7 svn版本配置
图4-7 svn版本配置

5 工程配置

5.1 创建新任务

在浏览器输入“IP:8080”进入Jenkins首页,点击“创建一个新任务”,如图5-1所示。
图5-1 jenkins首页
图5-1 jenkins首页
新建任务采用自由风格的软件项目,项目名称为test,如图5-2所示。
图5-2 建立项目
图5-2 建立项目

5.2 项目配置

5.2.1 项目名称配置

如图5-3所示,配置项目名称和项目描述。
图5-3 项目名称配置
图5-3 项目名称配置

5.2.2 源码配置

如图5-4所示,进行配置项目源码路径,本文中采用SVN链接下载源码。其中Cradentials 请填写SVN的账号和密码。
图5-4 源码配置
图5-4 源码配置

备注:如果是采用git下载源码,需要开通jenkins账号的git下载权限。
一般情况下,是使用jenkins账号生成公钥,然后把公钥添加至git服务器。

5.2.3 触发器配置

jenkins支持配置触发器,按照一定条件触发构建操作。如定时触发、检测到源码有更新触发。如图5-5所示,选择“Poll SCM”,用于检测到源码服务器有更新,才触发构建动作。在“Poll SCM”中,可以配置多久检查一次源码是否更新,图中配置为每天的03:00检查一次。
如果需要修改时间间隔,直接修改配置“H 3 * * *”即可,具体的时间设置格式,点击图中红色方框的“?”,可以知道格式。
图5-5 设置触发器
图5-5 设置触发器

5.2.4 构建配置

jenkins可以自定义构建步骤,如图5-6所示。增加构建步骤–> Execute shell,采用shell 命令执行构建工程。
图5-6 增加shell 构建步骤
图5-6 增加shell 构建步骤

在shell构建步骤中,填写自己的构建命令。该命令的语法,和shell命令完全一致,如make all。当然,在shell命令中,还可以引用系统的宏,系统的宏定义参数,点击图5-7中的“the list of available environment variables”查看。
图5-7 shell构建命令
图5-7 shell构建命令

5.2.5 发送邮件配置

jenkins的工程,支持将每次的构建结果,通过邮件发送。选择 构建后操作–>增加构建后操作步骤–>Editable Email Notification,配置邮件。
由于在4.3章节中已经配置过邮件,所以这里邮件的接收者、主题、正文,都直接采用默认的参数即可。在邮件配置中,选择“Advanced Settings”增加触发器,让每次构建之后,都发送邮件。
图5-8 邮件高级配置
图5-8 邮件高级配置

在高级设置中,找到触发器“Triggers“”,选择Add Trigger–> Always。配置如图5-9所示,则每次构建之后,都会邮件发送结果。
图5-9 Triggers配置
图5-9 Triggers配置

备注:如图5-8所示每次发送邮件,可以选择添加附件。
1、添加附件的目录为工作空间的根目录下。
2、可以添加编译日志作为附件。
3、jenkins附件添加功能,当邮件正文引用了系统宏${PROJECT_URL},由于链接地址比较特殊,有可能被企业邮箱或者公司的防火墙阻拦,导致无法查看附件,如图5-10所示。遇到这个问题,按照这个提示,单击5-10中的红色部分,启用链接即可查看附件。
图5-10 邮件链接禁用提示
图5-10 邮件链接禁用提示

5.2.6 邮件正文配置

在邮件正文中,可以调用系统的宏,也可以调用jellly、grovy脚本。当然,这些脚本必须存在的jenkins的安装目录下的email-templates目录中。如果没有该目录,则自己创建目录。

1、调用jelly脚本例如,调用的脚本名称为“html.jelly”,则在邮件正文中,直接添加如下代码。${JELLY_SCRIPT,template="html"}2、调用grovy脚本例如,调用的grovy脚本名称为“groovy-html.template”,则在邮件正文中,直接添加如下代码。${SCRIPT, template="groovy-html.template"}具体的使用,可以参考jenkins的wiki网站操作。https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin#Email-extplugin-该网站也可以下载相应的脚本。

https://wiki.jenkins-ci.org/download/attachments/3604514/jenkins-matrix-email-html.template?version=1&modificationDate=1332562186000

如下是我的邮件正文配置。

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title></head><body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">    <table width="95%" cellpadding="0" cellspacing="0"style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">        <tr>            <td>(本邮件是程序自动下发的,请勿回复!)</td>        </tr>        <tr>            <td><h2>                    <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>                </h2></td>        </tr>        <tr>            <td><br />            <b><font color="#0B610B">构建信息</font></b>            <hr size="2" width="100%" align="center" /></td>        </tr>        <tr>            <td>                <ul>                    <li>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li>                    <li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建</li>                    <li>触发原因:&nbsp;${CAUSE}</li>                    <li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>                    <li>日志解析:&nbsp;<a href="${BUILD_URL}parsed_console">${BUILD_URL}parsed_console</a></li>                    <li>构建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>                    <li>工作目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>                    <li>项目&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>                    <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>                    <li>如果您没有开发者账号,可以采用如下账号和密码查看 : </li>                    <li>账号:customer</li>                    <li>密码:customer</li>                </ul>            </td>        </tr>    </table></body></html>

其中,“test1.template”存放路径为“/var/lib/jenkins/email-templates/test1.template”,用于报告编译时间。注意:默认是没有/var/lib/jenkins/email-templates/目录,需要自己手动创建。
脚本内容如下:

<html><body><tr>    <td><br />    <b><font color="#0B610B">编译时间</font></b>    <hr size="2" width="100%" align="center" /></td></tr>Build started at:${it.timestampString}<br>Build duration:  ${build.durationString}</body></html>

最后,对项目进行构建,构建完成之后,发送的邮件如图5-11所示。
图5-11 邮件结果
图5-11 邮件结果

6、日志解析功能

对于jenkins的编译日志,每次都可以在网页上查看,但是有时候可能日志几千行甚至几万行。要从大量的日志文件中找到出错的日志,非常麻烦。对此,jenkins提供了日志解析插件“Log Parser Plugin”。

6.1 安装Log Parser Plugin

jenkins-->系统管理-->管理插件,在插件安装中,找到“Log Parser Plugin”插件,点击安装插件。

6.2 配置日志解析功能

安装插件之后,在系统中,会有新的文件夹/var/lib/jenkins/plugins/log-parser,该目录为日志解析插件的目录。(1)进入该目录
cd /var/lib/jenkins/plugins/log-parser
 (2)增加日志解析配置 vi my_parse 该文件配置可以参考jenkins官网 个人的配置如下,保存的文件名为my_parse
ok /not really/# match line starting with 'error ', case-insensitiveerror /(?i)^error /# list of warnings here...warning /[Ww]arning/warning /WARNING/# create a quick access link to lines in the report containing 'INFO'info /INFO/# each line containing 'BUILD' represents the start of a section for grouping errors and warnings found after the line.# also creates a quick access link.start /BUILD/

(3)配置全局parse log
系统管理–>系统设置–>Console Output Parsing,修改配置如图6-1所示。
图6-1 全局console ouput parsing配置
图6-1 全局console ouput parsing配置

(4)工程配置
在对应的工程中,增加日志解析功能。在构建后操作–>console output (build log) parsing,如图6-2所示。
图6-2 工程console output parsing 配置
图6-2 工程console output parsing 配置

6.3 日记解析效果

配置完成之后,进行项目构建,构建之后,在项目中可以显示日志的警告和错误走势图形,如图6-3所示。
图6-3 日志解析警告和错误走势图
图6-3 日志解析警告和错误走势图

每次构建完成之后,会生成日志解析列表,可以在具体的工程某次编译日志查看,如图6-4所示,点击图中的“Parse Console Output”
图6-4 编译日志列表
图6-4 编译日志列表

点击之后,可以查看日志解析,如图6-5所示。日志解析界面中,点击其中的警告或者错误,即可跳转到相应日志。
图6-5 日志解析功能示例
图6-5 日志解析功能示例