如何实现Jenkins向MS Teams发送含构建详情的通知并解决发送失败问题
解决Jenkins流水线MS Teams通知失败及优化内容的方案
常见失败原因排查
- Webhook URL错误:你提供的URL里有多余的
////,这会导致请求无法正常发送到Teams,必须修正为Teams生成的标准Webhook地址(格式类似https://xxx.webhook.office.com/webhookb/xxxxxx)。 - 插件未正确配置:确认Jenkins已安装并启用
Office 365 Connector插件,且插件版本与当前Jenkins版本兼容。 - 变量解析异常:检查
${REPO}、${TAG}是否在流水线当前作用域中已正确定义并赋值,避免因变量为空导致通知内容异常。
包含Build Details、Tags、Committers的优化代码
下面是修复后的流水线代码,既解决通知发送问题,又添加了你需要的构建详情、镜像标签、提交者信息:
stage('MSTEAMS') { steps { script { // 获取构建相关信息 def buildNumber = env.BUILD_NUMBER def buildUrl = env.BUILD_URL def committers = sh(script: 'git log --pretty=format:"%an" -1', returnStdout: true).trim() def imageUrl = "123456.dkr.ecr.ap-south-1.amazonaws.com/${REPO}:${TAG}" office365ConnectorSend( webhookUrl: "https://orosoft.webhook.office.com/webhookb/xxxxxxxxxxxxx", // 修正后的Webhook地址 status: "Success", color: "00ff00", sections: [ [ activityTitle: "✅ Jenkins构建完成", activitySubtitle: "构建编号: #${buildNumber}", facts: [ [name: "镜像地址", value: imageUrl], [name: "镜像标签", value: "${TAG}"], [name: "最后提交者", value: committers], [name: "构建详情", value: "[查看详情](${buildUrl})"] ] ] ] ) } } }
额外注意事项
- 如果需要区分构建状态发送通知,建议添加
post阶段,根据成功/失败发送不同内容:post { success { // 上述成功通知代码 } failure { office365ConnectorSend( webhookUrl: "你的Webhook地址", status: "Failed", color: "ff0000", message: "构建编号 #${env.BUILD_NUMBER} 失败,[查看详情](${env.BUILD_URL})" ) } } - 确保Jenkins服务器可以正常访问Teams的Webhook地址,没有防火墙或代理限制。
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

