实现基于飞书webhook监听github代码提交

yizhihongxing

实现基于飞书 Webhook 监听 GitHub 代码提交的完整攻略包括以下步骤:

  1. 创建并配置 GitHub repository

首先,你需要在 GitHub 上创建一个 repository 用于存储代码,并在 Settings 中找到 Webhooks 选项并添加一个 webhook。

在添加 webhook 时,需要填写 Payload URL,也就是飞书中用于接收信息的 URL;并选择 Content type 为 application/json;并可选择 Payload version(一般选择最新版本)。

  1. 在飞书群中添加机器人

在飞书中创建一个群,并添加一个机器人,用于接收来自 GitHub repository 的 webhook。

飞书机器人可以通过创建群、添加成员的方式来实现。

  1. 编写监听代码

你需要编写一个监听代码,当 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() 函数中添加发送消息至飞书机器人的代码。

  1. 部署监听代码

你需要将监听代码部署在一个公网可访问的服务器上。可以使用 Nginx、Apache 等服务器来搭建。

  1. 配置防火墙规则

你需要配置服务器的防火墙规则,使得可以接收来自 GitHub 的 webhook 请求。

  1. 测试

当你完成以上步骤后,可以进行测试。你可以在 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技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Python 通过爬虫实现GitHub网页的模拟登录的示例代码

    Python 通过爬虫实现GitHub网页的模拟登录的示例代码。 示例一:利用requests和beautifulsoup import requests from bs4 import BeautifulSoup # 登录页面url login_url = "https://github.com/login" # 浏览器请求头 head…

    GitHub 2023年5月16日
    00
  • 一文详解Go语言中的有限状态机FSM

    一文详解Go语言中的有限状态机FSM 什么是FSM? 先来了解一下什么是有限状态机(FSM,Finite State Machine)。 有限状态机是一种计算模型,它可以被形式化的表示为:FSM = {Q, Σ, δ, q0, F}。其中: Q 表示可能的状态集合; Σ 表示输入符号集合; δ 表示状态转移函数,它接收一个状态和一个输入符号,返回下一个可能的…

    GitHub 2023年5月16日
    00
  • Windows下Git使用入门(铁锚出品)

    下面我将详细讲解“Windows下Git使用入门(铁锚出品)”的完整攻略,过程中包含两条示例说明。 Windows下Git使用入门(铁锚出品) 前言 Git是一款分布式版本控制系统,近年来在软件开发中越来越受欢迎。本文将详细讲解如何在Windows系统下使用Git进行版本控制。本文是基于git version 2.24.1.windows.2和Windows…

    GitHub 2023年5月16日
    00
  • Android实现pdf在线预览或本地预览的方法

    方案说明:Android实现pdf在线预览或本地预览的方法一般有两种方案: 使用第三方库方式,如mupdf、vudroid等; 使用WebView加载pdf预览。 下面分别列出这两种方案的详细实现。 第一种方案:使用第三方库方式Step 1:导入库文件下载对应的pdf库文件,以mupdf为例,将库文件导入到工程目录中。 Step 2:添加依赖在工程目录中的g…

    GitHub 2023年5月16日
    00
  • Golang极简入门教程(四):编写第一个项目

    下面我来为你详细讲解Golang极简入门教程第四篇:编写第一个项目的完整攻略。 在这篇文章中,我们将通过两个小示例来学习如何用Golang编写简单的命令行工具和Web服务器,并介绍Golang语言中的一些基本概念和代码构建块,以便你可以开始编写自己的Golang应用程序。 示例一:编写一个简单的命令行工具 步骤一:创建一个新项目 我们需要在计算机上安装Gol…

    GitHub 2023年5月16日
    00
  • 全网最全Git命令手册

    下面详细讲解“全网最全Git命令手册”的完整攻略。 什么是Git Git是一个分布式版本控制系统,主要用于软件开发中的版本控制和源代码管理。 Git命令手册 Git仓库 初始化仓库 git init 克隆仓库 git clone [url] Git基础操作 添加文件到仓库 git add [file] 提交文件到仓库 git commit -m [messa…

    GitHub 2023年5月16日
    00
  • 微软Build看点总结 2018开发者大会首日消息

    微软 Build 2018 看点总结 微软 Build 2018 开发者大会于 5 月 7 日在美国西雅图隆重拉开帷幕,这也是微软第 8 届 Build 大会。在本次大会上,微软发布了许多新产品和更新,特别是人工智能(AI)和云计算方面的收获。 看点总结 1. 人工智能 微软在本次大会上宣布将加强对人工智能的支持,推出 AI for Accessibilit…

    GitHub 2023年5月16日
    00
  • Go gorilla/sessions库安装使用

    安装Go Gorilla/sessions库 1.使用go get命令下载Gorilla/sessions库 go get github.com/gorilla/sessions 2.导入sessions包到您的项目中(示例代码1) import "github.com/gorilla/sessions" 使用Gorilla/sessio…

    GitHub 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部