Python - Jenkins构建完成后发送飞书通知

1、飞书群里添加机器人

飞书群里添加机器人,保存好对应的webhook地址,在下面python脚本中用到

使用文档,参考:开发文档 - 飞书开放平台

 2、Jenkins构建完成后发送飞书通知

使用python脚本,发送飞书通知

代码如下:

# -*- encoding: utf-8 -*-
"""
    @Author : 袋鼠KK
    @File :webhook.py
    @Time :2023/5/16
    @Remark :飞书通知
"""
import requests

# 飞书机器人的webhook地址
url = “https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx”

method = "post"
headers = {"Content-Type": "application/json"}


"""
    last_build_number: Jenkins最后一次构建number
    last_build_result: Jenkins最后一次构建结果
    last_build_report: Jenkins最后一次构建输出报告
""" 

last_build_report = jenkins_url + "job/" + job_name + "/HTML_20Report/" + job_name + "_" + str(last_build_number) + ".html"

last_build_number, last_build_result = jenkins_build()

data = {
    "msg_type": "interactive",
    "card": {
        "config": {
            "wide_screen_mode": True,
            "enable_forward": True
        },
        "elements": [{
            "tag": "div",
            "text": {
                # 这是卡片的内容,也可以添加其他的内容:比如构建分支,构建编号等
                "content": "项目名称: {}".format(job_name), 
                "tag": "lark_md"
            }
        }, {
            "tag": "div",
            "text": {
                # 这是卡片的内容,也可以添加其他的内容:比如构建分支,构建编号等
                "content": "构建编号: 第{}次构建".format(last_build_number),  
                "tag": "lark_md"
            }
        }, {
            "tag": "div",
            "text": {
                # 这是卡片的内容,也可以添加其他的内容:比如构建分支,构建编号等
                "content": "用例执行结果 - {}".format(last_build_result),  
                "tag": "lark_md"
            }
        }, {
            "tag": "div",
            "text": {
                # 这是卡片的内容,也可以添加其他的内容:比如构建分支,构建编号等
                "content": "构建URL: {}job/{}/{}".format(jenkins_url, job_name, last_build_number),  
                "tag": "lark_md"
            }
        }, {
            "actions": [{
                "tag": "button",
                "text": {
                    # 这是卡片的按钮,点击可以跳转到url指向的构建日志路径
                    "content": "构建日志",  
                    "tag": "lark_md"
                },
                # JOB_URL 调用python定义的变量,该url是服务器下的build log路径
                "url": f"{jenkins_url}job/{job_name}/{last_build_number}/console",  
                "type": "default",
                "value": {}
            },{
                "tag": "button",
                "text": {
                    # 这是卡片的按钮,点击可以跳转到url指向的report路径
                    "content": "查看测试报告",  
                    "tag": "lark_md"
                },
                "url": f"{last_build_report}",
                "type": "default",
                "value": {}
            }],
            "tag": "action"
        }],
        "header": {
            "template": "red",
            "title": {
                # JOB_NAME 调用python定义的变量,这是卡片的标题
                "content": "【接口自动化构建报告】 - build#{}".format(last_build_number),  
                "tag": "plain_text"
            }
        }
    }
}

response = requests.request(method=method, url=url, headers=headers, json=data)
print(response)
print(response.json())

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要获取Jenkins pipeline的构建信息,可以使用python-jenkins插件提供的方法。具体步骤如下: 1. 首先,导入python-jenkins模块: ```python import jenkins ``` 2. 创建一个Jenkins对象,并连接到Jenkins服务器: ```python server = jenkins.Jenkins(jenkins_server, username=user_id, password=api_token) ``` 其中,jenkins_server是Jenkins服务器的URL,user_id和api_token是用于身份验证的用户名和API令牌。 3. 使用Jenkins对象的get_job_info方法获取指定pipeline的构建信息: ```python job_info = server.get_job_info('pipeline_name') ``` 其中,pipeline_name是要获取构建信息的pipeline的名称。 4. 通过job_info可以获取到构建信息的各种属性,例如构建号、状态、开始时间、结束时间等。可以根据需要提取所需的信息。 以下是一个完整的示例代码: ```python import jenkins # 连接到Jenkins服务器 server = jenkins.Jenkins(jenkins_server, username=user_id, password=api_token) # 获取指定pipeline的构建信息 job_info = server.get_job_info('pipeline_name') # 提取构建信息的属性 build_number = job_info['lastBuild']['number'] build_status = job_info['lastBuild']['result'] build_start_time = job_info['lastBuild']['timestamp'] build_end_time = job_info['lastBuild']['timestamp'] # 打印构建信息 print("Build Number:", build_number) print("Build Status:", build_status) print("Build Start Time:", build_start_time) print("Build End Time:", build_end_time) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值