本文介绍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页面,需要配置:
如果需要使用到远程部署等功能,需要添加上:
新安装的tomcat,访问tomcat的Server Status、Manager App、Host Manager三个页面均显示403,conf/tomcat-users.xml里已添加配置:
(Tomat7不需要修改下面这两个文件只有Tomcat7以上才需要修改)。
在webapps下的host-manager和manager,都有名为META-INF的文件夹,里面都有context.xml文件,部分内容为:
此代码的作用是限制来访IP的,127.d+.d+.d+|::1|0:0:0:0:0:0:0:1,是正则表达式,表示IPv4和IPv6的本机环回地址,所以这也解释了,为什么我们本机可以访问管理界面,但是其他机器访问返回403。要修改为所有人都可以访问,可以直接注释掉或者改成这样:
如果tomcat在linux下的话,需要做如下配置,然后重启tomcat即可:
1)tomcat/conf/tomcat-users.xml:
在文件的最后添加一下内容:
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,仅供参考:
${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志
本邮件由系统自动发出,无需回复!
各位同事,大家好,以下为${PROJECT_NAME }项目构建信息
构建结果 - ${BUILD_STATUS}
构建信息
- 项目名称 : ${PROJECT_NAME}
- 构建编号 : 第${BUILD_NUMBER}次构建
- 触发原因: ${CAUSE}
- 构建状态: ${BUILD_STATUS}
- 构建日志: ${BUILD_URL}console
- 构建 Url : ${BUILD_URL}
- 工作目录 : ${PROJECT_URL}ws
- 项目 Url : ${PROJECT_URL}
失败用例
$FAILED_TESTS
最近提交(#$SVN_REVISION)
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="- %d [%a] %m
"}
详细提交: ${PROJECT_URL}changes