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中的红色方框所示,直接打开该文件即可获取初始密码。
3.4.2 插件安装
登录之后,进入安装插件界面,如图3-2所示。如果没有特别的需求,直接选择“安装推荐插件(Install suggested plugins)”即可。
图3-2 安装插件方式
选择之后,进入插件安装界面。进行安装的插件,如图3-3所示。
图3-3 插件安装列表
如果安装的过程中,由于网络或者插件的链接地址不是最新,所以导致安装失败。
图3-4 插件安装失败
遇到这个问题,插件安装结束之后(图3-4 Getting Gtarted进度显示100%),直接刷新网页进入jenkins。进入之后,再去另外进行安装。
安装插件完成或者失败,重启网页之后,都可以进入页面。首次进入,可以新建管理员账号和密码。
图3-5 设置管理官账号和密码
设置完成之后,登录进去,进入jenkins的首页,如图3-6所示。可以在Windows下或者ubuntu下的浏览器进行登录,在windows下的登录,界面自动切换成中文,ubuntu登录,界面为英文。
图3-6 jenkins首页
3.3.3 插件管理
在图3-6中,选择系统管里。然后在图3-7中系统管理中,选择管理插件,即可进入插件的操作。
图3-7 系统管理
进入管理插件之后,可以根据用户需要,自行安装和删除插件,如图3-8所示。由于需要jenkins的发送邮件功能,故选择邮件的插件“Email Extension Template Plugin”。
图3-8中的“过滤”,用于搜索需要的插件名称。右下角的“立即获取”,用于检查插件是否最新,一般不需要选择。勾选中“Email Extension Template Plugin”之后,选择左下角的“直接安装”,进行插件安装。
图3-8 插件安装
如此一来,基本的jenkins服务器在ubuntu上安装,已经完成。
系统默认将jenkins安装在/var/lib/jenkins 目录下,配置和操作,都在该目录下,有兴趣可以自己到该目录查看。
4 系统配置
进入jenkins网页之后,在“系统管理”–>“系统设置”,可以设置系统的全局配置。当然,也可以直接在浏览器输入“http://172.16.163.80:8080/configure”进入到该配置页面。
图4-1 系统设置
4.1 Timestamper配置
在进入系统设置界面之后,里面有“Timestamper”,用于设置Timestamper格式。
图4-2 Timestamper配置
4.2 邮件配置
1、首先需要配置jenkins的管理员邮箱账号,邮箱账号名字随意。
图4-3 配置管理员邮箱账号
2、配置邮件通知
在“邮件通知”中,选择高级,如图4-4所示。
图4-4 邮件通知
邮件配置只需要配置“SMTP服务器”和“字符集”。其中SMTP服务器为邮件的服务器,字符集配置为UTF-8,是为了让邮件支持中文,不会出现中文乱码。
配置完成之后,勾选“通过发送测试邮件测试配置”,填写一个接收邮件的账号,然后点击右下角的“Test configuration”,如果提示“ Email was successfully sent”并且成功收到邮件,则说明邮件配置正确。
特别注意:Jenkins的邮件配置只需要配置这些就可以发送邮件,如果用户在“Extended E-mail Notification”中配置了邮箱账号和密码,反而会导致邮件无法发送,切记!
图4-5 邮件测试配置
4.3 拓展邮件通知配置
在“Extended E-mail Notification”中,进行邮件的发送、抄送、邮件主题、正文配置。这些配置完成之后,都会被系统保存为默认的邮件参数。配置如图4-6所示。
图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版本配置
5 工程配置
5.1 创建新任务
在浏览器输入“IP:8080”进入Jenkins首页,点击“创建一个新任务”,如图5-1所示。
图5-1 jenkins首页
新建任务采用自由风格的软件项目,项目名称为test,如图5-2所示。
图5-2 建立项目
5.2 项目配置
5.2.1 项目名称配置
如图5-3所示,配置项目名称和项目描述。
图5-3 项目名称配置
5.2.2 源码配置
如图5-4所示,进行配置项目源码路径,本文中采用SVN链接下载源码。其中Cradentials 请填写SVN的账号和密码。
图5-4 源码配置
备注:如果是采用git下载源码,需要开通jenkins账号的git下载权限。
一般情况下,是使用jenkins账号生成公钥,然后把公钥添加至git服务器。
5.2.3 触发器配置
jenkins支持配置触发器,按照一定条件触发构建操作。如定时触发、检测到源码有更新触发。如图5-5所示,选择“Poll SCM”,用于检测到源码服务器有更新,才触发构建动作。在“Poll SCM”中,可以配置多久检查一次源码是否更新,图中配置为每天的03:00检查一次。
如果需要修改时间间隔,直接修改配置“H 3 * * *”即可,具体的时间设置格式,点击图中红色方框的“?”,可以知道格式。
图5-5 设置触发器
5.2.4 构建配置
jenkins可以自定义构建步骤,如图5-6所示。增加构建步骤–> Execute shell,采用shell 命令执行构建工程。
图5-6 增加shell 构建步骤
在shell构建步骤中,填写自己的构建命令。该命令的语法,和shell命令完全一致,如make all。当然,在shell命令中,还可以引用系统的宏,系统的宏定义参数,点击图5-7中的“the list of available environment variables”查看。
图5-7 shell构建命令
5.2.5 发送邮件配置
jenkins的工程,支持将每次的构建结果,通过邮件发送。选择 构建后操作–>增加构建后操作步骤–>Editable Email Notification,配置邮件。
由于在4.3章节中已经配置过邮件,所以这里邮件的接收者、主题、正文,都直接采用默认的参数即可。在邮件配置中,选择“Advanced Settings”增加触发器,让每次构建之后,都发送邮件。
图5-8 邮件高级配置
在高级设置中,找到触发器“Triggers“”,选择Add Trigger–> Always。配置如图5-9所示,则每次构建之后,都会邮件发送结果。
图5-9 Triggers配置
备注:如图5-8所示每次发送邮件,可以选择添加附件。
1、添加附件的目录为工作空间的根目录下。
2、可以添加编译日志作为附件。
3、jenkins附件添加功能,当邮件正文引用了系统宏${PROJECT_URL},由于链接地址比较特殊,有可能被企业邮箱或者公司的防火墙阻拦,导致无法查看附件,如图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>项目名称 : ${PROJECT_NAME}</li> <li>构建编号 : 第${BUILD_NUMBER}次构建</li> <li>触发原因: ${CAUSE}</li> <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>日志解析: <a href="${BUILD_URL}parsed_console">${BUILD_URL}parsed_console</a></li> <li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>项目 Url : <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 邮件结果
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配置
(4)工程配置
在对应的工程中,增加日志解析功能。在构建后操作–>console output (build log) parsing,如图6-2所示。
图6-2 工程console output parsing 配置
6.3 日记解析效果
配置完成之后,进行项目构建,构建之后,在项目中可以显示日志的警告和错误走势图形,如图6-3所示。
图6-3 日志解析警告和错误走势图
每次构建完成之后,会生成日志解析列表,可以在具体的工程某次编译日志查看,如图6-4所示,点击图中的“Parse Console Output”
图6-4 编译日志列表
点击之后,可以查看日志解析,如图6-5所示。日志解析界面中,点击其中的警告或者错误,即可跳转到相应日志。
图6-5 日志解析功能示例
- Ubuntu 搭建Jenkins服务器以及配置邮件工程全解
- ubuntu搭建postfix邮件服务器配置客户端收发邮件
- Ubuntu搭建邮件服务器
- ubuntu自己搭建邮件服务器
- Ubuntu 14.04 邮件服务器配置
- jenkins服务器的搭建和配置
- Jenkins持续集成服务器配置Linux(Ubuntu)
- Ubuntu Server安装和配置Jenkins服务器
- Jenkins持续集成服务器配置Linux(Ubuntu)
- ubuntu下用postfix搭建邮件服务器
- ubuntu 下postfix邮件服务器的搭建
- ubuntu下邮件服务器的搭建
- ubuntu下用postfix搭建邮件服务器
- ubuntu下用postfix搭建邮件服务器
- Jenkins全流程搭建
- Jenkins:配置qq邮箱作为发送邮件的邮箱服务器
- jenkins邮件配置
- Jenkins邮件配置
- HTML5(一)
- hdu 6200 mustedge mustedge mustedge
- 用fprintf()函数输出复数的虚部
- Leetcode 532. K-diff Pairs in an Array
- (CodeForces
- Ubuntu 搭建Jenkins服务器以及配置邮件工程全解
- 51Nod
- 完全背包
- 第八篇 uCGUI的移植
- Overfeat
- C++笔记 第一章1--小概念
- Java中集合(三)Stack
- 一些防止java代码被反编译的方法
- 第四周项目五猴子选大王