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"
        """
    }
}
相关推荐
小白的码BUG之路2 天前
Jenkins -- 配置jdk和maven
java·jenkins·maven
9144062322 天前
安装jenkins遇到的问题总结
运维·jenkins
小白的码BUG之路2 天前
Jenkins -- 配置ssh
运维·ssh·jenkins
王琦03183 天前
jenkins使用手册
运维·jenkins
不老刘3 天前
Maven 多医院分支场景下 groupId 的设计与 Jenkins 落地实践
servlet·jenkins·maven
meijinmeng5 天前
将 Kubernetes 部署扩展到多个Region区域:GitOps 参考架构
k8s·cicd
wangfenglei1234565 天前
jenkins权限配置
运维·jenkins
骑着蜗牛撵大象3275 天前
CentOS 7 单机拉起 Elasticsearch 7.17.29:从内核报错到公网可达的全链路记录
elasticsearch·centos·jenkins·restful·内核调优·公网部署
打工仔折腾 AI5 天前
CentOS 7 单机部署 Elasticsearch 7.17.29:启动报错排查与 CRUD 验证
人工智能·后端·python·elasticsearch·性能优化·centos·jenkins
西柚不烦恼6 天前
PyCharm 虚拟环境与 Jenkins 自动化部署实践
pycharm·自动化·jenkins