赞
踩
本文介绍jenkins中使用频率最多的3个插件,包括其作用,常用的参数以及配置。
应用场景:利用此插件将编译好的war/jar文件上传到远程linux指定的目录下,在远程执行脚本将拷贝的文件复制到tomcat的webapps文件夹下,重启tomact。可以采用用户名和密码的方式登录,也可以采用公钥认证的方式。
进入jenkins主页,系统管理–>全局工具配置,下拉到最后
主配置项
以上是默认配置,适用于所有的server。
Passphrase:linux下生成ssh key时加密使用的密码,没有的话不用填
Path to file:jenkins所在主机上保存ssh私钥文件的路径,可以是绝对路径也可以是相对于JENKINS_HOME的路径
Key:ssh私钥(包含头尾----的内容),如果key和path to file均填写了,那么以key中的内容为准
Disable exec:勾选此项后,此插件将不能执行指定的命令,默认即可
Add an SSH Server:单击“新增”按钮
SSH Server
Name:标识的名字,随便写,能方便区分即可
Hostname:需要连接ssh的主机名或ip地址(建议ip)
Username:远程主机登录的用户名,点击高级后才能填写密码
Remote Directory:远程目录,指的是ssh文件上传后,文件在远程服务器上的保存路径,路径需要预先建立好,同时,如果上传了文件后,需要执行命令的话,这也是bat、shell等命令的工作目录。
高级配置项:单击高级…按钮
Use password authentication, or use a different key:可以替换公共配置(选中展开的就是公共配置的东西,这样做扩展性很好,不同的服务器有不同的密钥)
Passphrase / Password:如果Path to key和key两项有一个配置的话,此配置项表示密钥加密时使用的 passphrase,如果key对应的输入框是空的话,此配置项表示登录的密码
Path to key:同上
Key:同上
Port:端口(默认22)
Timeout (ms):超时时间(毫秒)默认即可
Disable exec:同上
Test Configuration:测试是否可以链接到远程服务器
Add more server configurations (if required):添加更多的服务器配置
1)在jenkins中安装Publish over SSH插件,前面已经介绍过,不再赘述;
2) 用户名和密码方式链接:
构建后操作→增加构建后操作步骤→Send build artifacts over SSH
脚本内容:
#替换tomcat中的旧文件
cp -r /tmp/myapp/interface_proj.war /usr/local/apache-tomcat-8.5.38/webapps
# 关闭tomcat
sh /usr/local/apache-tomcat-8.5.38/bin/shutdown.sh
sleep 15s
#启动tomcat
sh /usr/local/apache-tomcat-8.5.38/bin/startup.sh
#验证tomcat启动
ps -ef|grep tomcat|grep start|grep -v 'grep'|awk '{print $2}'
SSH Server Name:选一个在系统设置里配置的配置的名字
Transfer Set Source files:需要上传的文件(注意:相对于工作区的路径。看后面的配置可以填写多个,默认用,分隔)
Remove prefix:移除目录(只能指定Transfer Set Source files中的目录)
Remote directory:远程目录(根据你的需求填写,默认会继承系统配置)
Exec command:把你要执行的命令写在里面
高级设置:(默认值即可)
Exclude files:排除的文件(在你传输目录的时候很有用,使用通配符,例如:/*.log,/*.tmp,.git/)
这种方式能够将生成的war自动发布到指定ip的tomcat中,前提是tomcat已经启动。
Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。Tomcat Manager需要以用户角色进行登录并授权才能使用相应的功能,由于tomcatManager在默认的情况下是禁用的,因此需要我们进行相应的用户配置之后才能使用Tomcat Manager。用户角色如下:
1)manager-gui:允许访问html接口(即URL路径为/manager/html/)
2)manager-script:允许访问纯文本接口(即URL路径为/manager/text/)
3)manager-jmx: 允许访问JMX代理接口(即URL路径为/manager/jmxproxy/)
4)manager-status:允许访问Tomcat只读状态页面(即URL路径为/manager/status/)
如果想要访问manager页面,需要配置:
<role rolename="manager-gui"/><user username="admin" password="password" roles="manager-gui"/>
如果需要使用到远程部署等功能,需要添加上:
<role rolename="manager-script" /><user username="admin" password="password" roles="manager-gui,manager-script"/>
新安装的tomcat,访问tomcat的Server Status、Manager App、Host Manager三个页面均显示403,conf/tomcat-users.xml里已添加配置:
(Tomat7不需要修改下面这两个文件只有Tomcat7以上才需要修改)。
在webapps下的host-manager和manager,都有名为META-INF的文件夹,里面都有context.xml文件,部分内容为:
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />
</Context>
此代码的作用是限制来访IP的,127.d+.d+.d+|::1|0:0:0:0:0:0:0:1,是正则表达式,表示IPv4和IPv6的本机环回地址,所以这也解释了,为什么我们本机可以访问管理界面,但是其他机器访问返回403。要修改为所有人都可以访问,可以直接注释掉或者改成这样:
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
</Context>
如果tomcat在linux下的话,需要做如下配置,然后重启tomcat即可:
1)tomcat/conf/tomcat-users.xml:
在文件的最后添加一下内容:
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-status" />
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="deploy" password="tomcat" roles="admin,manager,manager-gui,manager-script,manager-status" />
2)tomcat/webapps/manager/META-INF/context.xml:
如下图所示,注释掉标签
说明:如果发布过程中提示
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403)
检查以上2个文件是否正确配置
Jenkins默认的邮件通知,能在构建失败、构建不稳定等状态后发送邮件。但是它本身有很多局限性,比如邮件通知无法提供详细的邮件内容、无法定义发送邮件的格式、无法定义灵活的邮件接收配置等等。Jenkins Email Extension Plugin能允许你自定义邮件通知的方方面面,比如在发送邮件时你可以自定义发送给谁,发送具体什么内容等等。配置如下:
这里的发件人邮箱地址切记要和系统管理员邮件地址保持一致。
注意事项:
1)如果设置QQ邮箱的话,密码必须为授权码,开启方法:登录QQ邮箱,在”设置”–>“帐户”里开启“POP3/SMTP”并获取授权码。(否则报错535)https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256
2)必须勾选【Use SMTP Authentication】【Use SSL】
3)用户名必须与系统管理员邮件地址保持一致。(否则报错501)
4)设置接收人(Recipients),多个接收人时用英文空格分隔。
进入系统管理- 系统设置 - Extended E-mail Notification
SMTP基础设置:
参数说明:
SMTP server:邮件协议服务器。qq:smtp.qq.com
Default user E-mail suffix:邮箱的后缀名。qq:@qq.com
Default Content Type:默认的发送的邮件内容类型,默认是text,我们选择HTML(test/html)
Default Recipients:默认的收件人列表,多个的话用逗号隔开。如果没有被项目中的配置覆盖的话,该插件会使用这个列表。可以在项目配置使用$ DEFAULT_RECIPIENTS参数包括此默认列表,也可以根据实际需要添加新的地址
Reply To List:回复列表
Emergency reroute:如果不为空的话,所有的邮件将只发送到指定的邮箱列表
Allowed Domains:允许发送的域名。比如:@domain1.com,domain2.com,那么任何匹配*@domain1.com和*@*.domain2.com都可以发送
Excluded Recipients:禁止发送邮件的邮箱地址
Default Subject:默认的邮件主题。可以使用jenkins自带的一些全局变量
Maximum Attachment Size:最大的附件大小
Default Content:默认的邮件内容。
Default Pre-send Script:默认发送前执行的脚本
Default Post-send Script:默认发送后执行的脚本
Default Triggers:当任务构建完成后选择 Editable Email Notification的话,满足以下触发的条件就会发送邮件
Content Token Reference:邮件中可以使用的变量。点击右侧的问号可以查看
配置见下图:
高级设置,见下图:
参数说明:
Use SMTP Authentication:勾选后才能看到用户名和密码
User Name:qq用户名,@qq.com可以不写
Use SSL:使用安全连接
SMTP port:qq邮箱SSL启用就是465/587,不启用ssl就是25。
配置见下图:
设置好以上内容后,点击保存。即全局设置完成~~
在任务的配置中,“构建后操作”中选择“Editable Email Notification”选项即可使用Extended E-mail Notification插件。
基本配置:
参数说明:只列出常用的参数
Project Recipient List:这是一个以逗号(或者空格)分隔的收件人邮件的邮箱地址列表。
如果想在默认收件人的基础上添加收件人:$DEFAULT_RECIPIENTS,<新的收件人>
Default Subject:邮件主题,默认为Extended E-mail Notification配置的主题。
Default Content:跟Default Subject的作用一样,但是是替换邮件内容。
Attach Build Log:将构建日志作为附件发送
Compress Build Log before sending:发送压缩格式的日志(zip格式)
高级配置:
单击Advanced Settings…,可以用来进行更细化的设置,比如:执行成功和执行失败分别发送给不同的邮箱。
注意:默认情况下是没有配置触发器的,任务构建成功后会提示:No emails were triggered.。
参数说明:
在每个Trigger中都有高级配置项目,可以配置的内容和Extended E-mail Notification配置项目类似,这里修改的话会覆盖之前的默认设置,具体不再赘述,配置项如下:
触发器类型:
注意:触发器都只能配置一次
Aborted:终止时发邮件,比如构建过程中手动停止构建,配置后就会给指定邮箱发邮件。
Always:不管什么构建情况都会发邮件。
Before Build:当构建开始时发送邮件。
Failure - 1st:第1次构建失败时发送构建失败的邮件。如果”Still Failing”触发器已配置,而上一次构建的状态是”Failure”,那么”Still Failing”触发器将发送一封邮件来替代(它)。
Failure Still :如果两次或两次以上连续构建的状态为”Failure”,发送该邮件。
Unstable:即时发送构建不稳定的邮件。如果”Still Unstable”触发器已配置,而上一次构建的状态是”Unstable”,那么”Still Unstable”触发器将发送一封邮件来替代(它)。
Success:如果构建的状态为”Successful”发送邮件。如果”Fixed”已配置,而上次构建的状态为“Failure”或“Unstable”,那么”Fixed”触发器将发送一封邮件来替代(它)。
Fixed:当构建状态从“Failure”或“Unstable”变为”Successful”时发送邮件。
Still Unstable:如果两次或两次以上连续构建的状态为” Unstable “,发送该邮件。
设置好以上内容后,点击保存。即Job中使用Extended E-mail设置完成
以下是网上找的Default Content,仅供参考:
<!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> 本邮件由系统自动发出,无需回复!<br/> 各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></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>构建状态: ${BUILD_STATUS}</li> <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}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> </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/> </td> </tr> </table> </body> </html>
效果展示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。