实现基于飞书 Webhook 监听 GitHub 代码提交的完整攻略包括以下步骤:
- 创建并配置 GitHub repository
首先,你需要在 GitHub 上创建一个 repository 用于存储代码,并在 Settings 中找到 Webhooks 选项并添加一个 webhook。
在添加 webhook 时,需要填写 Payload URL,也就是飞书中用于接收信息的 URL;并选择 Content type 为 application/json;并可选择 Payload version(一般选择最新版本)。
- 在飞书群中添加机器人
在飞书中创建一个群,并添加一个机器人,用于接收来自 GitHub repository 的 webhook。
飞书机器人可以通过创建群、添加成员的方式来实现。
- 编写监听代码
你需要编写一个监听代码,当 GitHub repository 收到新的推送时,就会触发此代码,将代码提交的信息发送给飞书机器人。
以下是一个基本的 Python 监听代码示例:
import json
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['POST'])
def webhook():
data = request.json
print(json.dumps(data, indent=4))
# Send data to Feishu robot
# ...
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
这个代码会创建一个 Flask 应用程序,当接收到 POST 请求时,会将 GitHub repository 发送的 JSON 数据打印出来。
你需要根据自己的需求,在 webhook()
函数中添加发送消息至飞书机器人的代码。
- 部署监听代码
你需要将监听代码部署在一个公网可访问的服务器上。可以使用 Nginx、Apache 等服务器来搭建。
- 配置防火墙规则
你需要配置服务器的防火墙规则,使得可以接收来自 GitHub 的 webhook 请求。
- 测试
当你完成以上步骤后,可以进行测试。你可以在 GitHub 上进行代码提交,查看是否能够触发监听代码,并在飞书群中收到相关的消息。
示例一:
假设你的 Python 监听程序部署在 http://yourserver.com:5000/
上,你已经在飞书中添加了机器人,并成功将 webhook 添加到 GitHub repository 中。
你可以在 GitHub 上进行代码提交,例如,在某个文件中添加一行注释:
# This is a test
当你进行代码提交并 push 到 GitHub repository 后,监听程序就会收到相应的 JSON 数据并打印在控制台上。
然后,你可以在监听程序中添加代码,将执行结果发送到飞书机器人,从而在飞书群中看到相应信息。
示例二:
假设你想在代码提交后,直接在飞书群中看到代码变更的情况。
在监听程序中,你可以解析 GitHub 发送的 JSON 数据,提取代码提交者和代码变化等信息,并将其发送至飞书机器人。
以下是一个 Python 示例代码:
import json
import requests
from flask import Flask, request
app = Flask(__name__)
# Replace it with your own Feishu robot webhook url
FEISHU_WEBHOOK_URL = 'https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxxxxxxxxxxx'
def send_message(payload):
headers = {
'Content-Type': 'application/json',
'charset': 'utf-8',
}
response = requests.post(FEISHU_WEBHOOK_URL, headers=headers, data=json.dumps(payload))
if response.status_code == 200:
return True
print(response.status_code, response.text)
return False
@app.route('/', methods=['POST'])
def webhook():
data = request.json
commit = data['head_commit']
message = f"New commit by {commit['author']['name']}: {commit['message']} "
message += f"\n\nModified files:"
for modified_file in commit['modified']:
message += f"\n - {modified_file}"
payload = {
'msg_type': 'text',
'content': {
'text': message
}
}
send_message(payload)
return '', 200
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
当你进行代码提交并 push 到 GitHub repository 后,监听程序将会解析 JSON 数据,并将提交者、提交消息和被修改的文件发送到飞书机器人。你可以在飞书群中看到这些变化信息。
希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:实现基于飞书webhook监听github代码提交 - Python技术站