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"
        """
    }
}
相关推荐
不吃香菜kkk、6 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
我爱吃土豆18 天前
从零给个人项目搭一套 CI/CD
阿里云·部署·cicd
qq_3494479511 天前
Ubuntu26安装jenkins
jenkins
蓝天星空11 天前
Jenkins项目矩阵授权配置
jenkins
今年下半年12 天前
Jenkins阿里云服务器一键部署
jenkins
程序员杰哥13 天前
UI自动化测试:Jenkins配置
自动化测试·软件测试·python·测试工具·职场和发展·jenkins·测试用例
wangfenglei12345613 天前
jenkins搭建docker启动
jenkins
snow@li13 天前
服务器运维:K3S 下 Jenkins ↔ GitLab 的 CI/CD 闭环 / 访问成功
运维·gitlab·jenkins
Java后端的Ai之路14 天前
一文搞懂 GitHub Actions-CICD
开发语言·大模型·github·cicd·action