Jenkins构建完成后发送飞书通知消息

Jenkins构建完成后发送飞书通知消息,网上搜索了一圈,提供的方案基本都是python或者shell脚本

代码量较大,配置起来也麻烦,以下提供了一个简易,且高效可靠的版本,实测生产可用。

1.添加飞书机器人

根据飞书文档操作就行,主要是拿到webhook地址,把它保存下来。飞书机器人

2.Jenkins添加凭据

依次点击 系统管理 -> 凭据管理 > 新增凭据 -> 选择secret text

注意,这里的id必须与下面脚本中的credentialsId完全一致,否则会失败,因为没获取到正确凭据

3.编写Jenkins脚本

飞书消息有3种类型,普通文本,富文本,消息卡片,这里使用飞书富文本消息,展示的信息已经足够多,如果想要更好的展示效果,可以使用飞书卡片,但是配置极其复杂,不太推荐,感兴趣的可自行查看飞书文档。

飞书卡片消息

复制代码
pipeline {
  ...
  stages {
    // 自定义构建步骤,根据需求来,此处不赘述
    ...
  }
  post {
    success {
      script {
        sendFeishuNotify(true)
      }
    }
    failure {
      script {
        sendFeishuNotify(false)
      }
    }
  }
}

def sendFeishuNotify(boolean success) {
    def buildTime = new Date().format("yyyy-MM-dd HH:mm:ss")
    def duration = (currentBuild.duration / 1000) as int
    def jobName = env.JOB_NAME
    def branch = env.BRANCH_NAME ?: 'unknown'
    def buildNumber = env.BUILD_NUMBER
    def appVersion = env.APP_VERSION
    def buildUrl = env.BUILD_URL
    def status = success ? '成功' : '失败'
    // docker私服地址,没有docker和镜像私服的可以去掉,jsonBody消息中的内容也记得去掉
    def imageLine = (success && env.FULL_IMAGE) ? "镜像地址: ${env.FULL_IMAGE}" : ''

    def jsonBody = """
        {
            "msg_type": "post",
            "content": {
                "post": {
                    "zh-CN": {
                        "title": "Jenkins构建${status}通知!",
                        "content": [
                            [
                                {
                                    "tag": "text",
                                    "text": "${jobName} ${branch}分支 构建${status} \\n"
                                },
                                {
                                    "tag": "text",
                                    "text": "构建时间:${buildTime} 耗时:${duration}s \\n"
                                },
                                {
                                    "tag": "text",
                                    "text": "版本:${appVersion} 构建编号:${buildNumber} \\n"
                                },
                                {
                                    "tag": "a",
                                    "text": "点击查看Jenkins \\n",
                                    "href": "${buildUrl}"
                                }
                            ],
                            [
                                {
                                    "tag": "text",
                                    "text": "${imageLine}"
                                }
                            ]
                        ]
                    }
                }
            }
        }
    """

    withCredentials([string(credentialsId: 'FEISHU_WEBHOOK_URL', variable: 'WEBHOOK_URL')]) {
        sh """
            curl -X POST \
                 -H 'Content-Type: application/json' \
                 -d '${jsonBody}' \
                 "\$WEBHOOK_URL"
        """
    }
}
相关推荐
@兽血沸腾31 分钟前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
拖累斯1 天前
Jenkins + Python 全自动跑通「禅道任务/BUG 导出 → 月度开发考核表」
python·jenkins·bug
逐流人1 天前
DevOps 入门实战(一):从 CI/CD 概念到 Jenkins 自动构建部署
运维·云原生·云计算·jenkins·devops
修心光4 天前
记录一次,jenkins打包异常问题
运维·jenkins
后台模板学习4 天前
GitHub Actions 与 Jenkins 在日志监
运维·github·jenkins
X1A0RAN5 天前
Jenkins CI 流水线优化实践:基于提交指纹的任务缓存
缓存·ci/cd·jenkins
北风toto6 天前
Elasticsearch 8.2.3 快照迁移实战:从备份到恢复的完整指南
大数据·elasticsearch·jenkins
biaov11 天前
Jenkins + Docker 搭建前端 CI:前端一键打包部署
前端·docker·jenkins
kaixin_learn_qt_ing14 天前
Jenkins
运维·jenkins
Madison-No715 天前
Jenkins持续集成
运维·ci/cd·jenkins