jenkins通过groovy脚本发送消息到钉钉机器人
使用groovy脚本,可以更灵活的将自定义消息发送到钉钉机器人
本文主要介绍jenkins在CI/CD过程中的各操作的消息推送,主要包括测试、预发、生产环境的构建、编译、部署成功、失败的消息推送,代码如下:
import java.util.List
import java.util.ArrayList
import java.net.URLEncoder
starttime = new Date().format('yyyy/MM/dd HH:mm:ss')
def SendMsg(status,envs) {
if(envs == "build"){
environment = "编译打包" ##打包动作
}
if(envs == "test"){
environment = "测试环境发布" ##发布至测试环境
}
if(envs == "pre"){
environment = "预生产环境发布" ##发布至预生产环境
}
if(envs == "prod"){
environment = "生产环境发布" ##发布至生产环境
}
if(envs == "rollback"){
environment = "生产环境回滚" ##生产环境代码回滚
}
if(status == "false"){
context = "组件名称: ${JOB_NAME}\\n执行结果: ${env.触发动作} 失败\\n执行人:$BUILD_USER\\n执行时间:$starttime" ##推送消息内容
}else{
context = "组件名称: ${JOB_NAME}\\n执行结果: ${env.触发动作} 成功\\n执行人:$BUILD_USER\\n执行时间:$starttime"
}
def msg = """{
\"msgtype\": \"text\",\"text\" : {\"content\":\"${context}\"}
}"""
response = httpRequest (consoleLogResponseBody: true, ##推送方法,需要提前了解钉钉消息推送格式
contentType: 'APPLICATION_JSON_UTF8',
acceptType: 'APPLICATION_JSON_UTF8',
httpMode: 'POST',
requestBody: msg,
url: "https://oapi.dingtalk.com/robot/send?access_token=xxxxx", ##钉钉机器人地址
validResponseCodes: '200')
return response
}
if( 触发动作 == "发布至测试环境"){
stage('创建任务'){
try{
node("${slave_node}") {
……………………………………
…………………………………… #过程省略
stage('测试环境服务部署'){
……………………………………
…………………………………… #过程省略
pod_check = DeployAndCheckTest("${deployment_name_test}",'default')
if (!pod_check){
SendMsg("false","test") ##调用msg方法,发送失败消息
error("服务启动异常")
}else {
SendMsg("SUCCESS","test") ##调用msg方法,发送成功消息
}
}
}
}
}catch(all){
SendMsg("false","test") ##调用msg方法,发送失败消息
}
}
}
推送消息展示
代码仅供参考,更多jenkins相关技术,可参考作者其他jenkins相关博文