Jenkins Pipeline 配置钉钉消息通知

2d697c8b26a7d91dc044f623e7f80f4a

Jenkins 版本:2.341



背景

有这样一个需求,在编写 Jenkinsfile 脚本中,需配置钉钉告警功能,里面涉及到的相关告警信息中,需包含构建人,即哪个该项目是由哪个人进行构建的,构建成功后相关的构建信息会以钉钉消息的形式通知。

功能实现:

  • 构建编号;
  • 构建列表;
  • 构建分支;
  • 构建环境;
  • 构建状态;
  • 项目地址;
  • 构建日志;
  • 构建后启动状态;
  • 执行人;
  • 构建持续时间。

一、安装插件

1.1 build user vars plugin

如果需要获取项目构建的人信息,需要安装 build user vars plugin 插件,否在获取变量值的时为 Null,下图我已经安装了,大家在搜索框搜索安装即可。

plugin

1.2 Ding Talk

这里还需要安装钉钉插件 Ding Talk,这后面会在 Jenkins 系统配置中进行相关配置。

image-20220708101206429

二、配置钉钉告警

2.1 钉钉添加机器人

1、进入你对应的相关群聊

点击右上角的设置图标;

下图是我已经配置过钉钉了。

image-20220708102604257

2、点击智能群助手

image-20220708102736255

3、点击添加机器人

image-20220708103008728

这时会跳到这个页面:继续点击添加机器人

image-20220708103218129

4、选择自定义

image-20220708103341118

5、完成相关填写即可

不清楚的可以点击图片上的说明问文档

image-20220708103446648

此时会生成 webhook 口令!你也可以点击对应的机器人获取:

image-20220708103943044

2.2 Jenkins 系统配置

1、进入系统配置

image-20220708102301654

2、找到钉钉模块

image-20220708102207159

三、编写 Jenkinsfile

以上配置均完成后,接下来就是在 jenkinsfile 中配置了。

构建后通知配置于 pipeline {} 中,与 stages {} 同级,下面是具体的模板信息,这里我只设置了成功失败两种情况,当然还有其他情况,大家根据实际情况配置即可。

pipeline {
	stages {
		// 流水线阶段/步骤
	}
    post {
        success {
            wrap([$class: 'BuildUser']) {
                dingtalk(
                    robot: 'Jenkins-Dingtalk',
                    type: 'MARKDOWN',
                    title: "success: ${JOB}",
                    text: ["### 项目信息",
                        '---',
                        "- 项目主体: CheckCheck",
                        "- 子项目: 斗地主",
                        "![ddz](https://xxx.com/img/puk.jpeg)",
                        "",
                        '---',
                        "### 构建信息",
                        '---',
                        "- 构建编号: <font color=#008000>${BUILD_ID}</font>",
                        "- 构建列表: ${JOB}",
                        "- 构建分支: ${BRANCH_TAG}",
                        "- 构建环境: ${ENV}",
                        "- 构建状态: **<font color=#008000>${currentBuild.result}</font>**",
                        "- 项目地址: ${BUILD_URL}",
                        "- 构建日志: ${BUILD_URL}console",
                        "",
                        '---',
                        "### 是否启动",
                        '---',
                        "- 构建后启动: ${START}",
                        "",
                        '---',
                        "### 执行人",
                        '---',
                        "- ${env.BUILD_USER}",
                        "",
                        '---',
                        "### 持续时间",
                        '---',
                        "- ${currentBuild.durationString}",
                        "",
                        '---']
                )
            }
        }
        failure {
            wrap([$class: 'BuildUser']) {
                dingtalk(
                    robot: 'Jenkins-Dingtalk',
                    type: 'MARKDOWN',
                    title: "failure: ${JOB}",
                    text: ["### 项目信息",
                        '---',
                        "- 项目主体: CheckCheck",
                        "- 子项目: 斗地主",
                        "![ddz](https://xxx.com/img/puk.jpeg)",
                        "",
                        '---',
                        "### 构建信息",
                        '---',
                        "- 构建编号: <font color=#dd3238>${BUILD_ID}</font>",
                        "- 构建列表: ${JOB}",
                        "- 构建分支: ${BRANCH_TAG}",
                        "- 构建环境: ${ENV}",
                        "- 构建状态: **<font color=#dd3238>${currentBuild.result}</font>**",
                        "- 项目地址: ${BUILD_URL}",
                        "- 构建日志: ${BUILD_URL}console",
                        "",
                        '---',
                        "### 是否启动",
                        '---',
                        "- 构建后启动: ${START}",
                        "",
                        '---',
                        "### 执行人",
                        '---',
                        "- ${env.BUILD_USER}",
                        "",
                        '---',
                        "### 持续时间",
                        '---',
                        "- ${currentBuild.durationString}",
                        "",
                        '---']
                )
            }
        }
    }
}

在编写 jenkinsfile 需注意的几个问题:

  • 变量:需确保你定义的变量有效;
  • 钉钉配置:robot: ‘Jenkins-Dingtalk’ 这个值必须为 2.2 小结 中系统配置定义的机器人 ID,因为钉钉的 webhook 是配置在 Jenkins 系统上的,否则你的 jenkinsfile 是无法连接或找到钉钉的。

四、钉钉告警验证

配完成后,就可以进行构建操作,不管成功或失败,都会接收到告警信息。

image-20220708105131153

至此,Jenkins pipeline 配置钉钉消息通知已经完成!

<点击跳转至开头>

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值