美文网首页
基于gitee 的webhook 的python 处理

基于gitee 的webhook 的python 处理

作者: JohnYuCN | 来源:发表于2022-11-30 21:36 被阅读0次

    1. server.py

    import flask
    import json
    from flask import request
    
    app = flask.Flask(__name__)
    # 启用调试模式,进行热更新,或者export FLASK_ENV=development
    app.debug = True
    
    @app.route('/',methods=['GET','POST'])
    def index():
        # 从request中获取请求体的数据,类型为string
        data=request.get_data()
        # 转换为list 或 dict 类型
        xs=json.loads(data)
    
        # 获取最新提交的用户名
        print(xs['user_name'])
        # 获取提交的message
        print(xs['head_commit']['message'])
        # 获取推送的分支名称
        print(xs['ref']) # eg: refs/heads/master
        return "success"
    
    app.run(host='0.0.0.0',port='5000')
    

    2. gitee 的 Push / Tag Hook 数据格式说明:

    具体查询: https://gitee.com/help/articles/4271#article-header1

    {
      hook_id: self.id,                    # 钩子 id。
      hook_url: hook_url,                  # 钩子路由。
      hook_name: String,                   # 钩子名,固定为 push_hooks/tag_push_hooks。
      password: String,                    # 钩子密码。eg:123456
      timestamp: Number,                   # 触发钩子的时间戳。eg: 1576754827988
      sign: String,                        # 钩子根据密钥计算的签名。eg: "rLEHLuZRIQHuTPeXMib9Czoq9dVXO4TsQcmQQHtjXHA="
      ref: String,                         # 推送的分支。eg:refs/heads/master
      before: String,                      # 推送前分支的 commit id。eg:5221c062df39e9e477ab015df22890b7bf13fbbd
      after: String,                       # 推送后分支的 commit id。eg:1cdcd819599cbb4099289dbbec762452f006cb40
      [total_commits_count: Number],       # 推送包含的 commit 总数。
      [commits_more_than_ten: Boolean],    # 推送包含的 commit 总数是否大于十二。
      created: Boolean,                    # 推送的是否是新分支。
      deleted: Boolean,                    # 推送的是否是删除分支。
      compare: String,                     # 推送的 commit 差异 url。eg:https://gitee.com/oschina/git-osc/compare/5221c062df39e9e477ab015df22890b7bf13fbbd...1cdcd819599cbb4099289dbbec762452f006cb40
      commits: [*commit] || null,          # 推送的全部 commit 信息。
      head_commit: commit,                 # 推送最前面的 commit 信息。
      repository: *project,                # 推送的目标仓库信息。
      project: *project,                   # 推送的目标仓库信息。
      user_id: Number,
      user_name: String,                   # 推送者的昵称。
      user: *user,                         # 推送者的用户信息。
      pusher: *user,                       # 推送者的用户信息。
      sender: *user,                       # 推送者的用户信息。
      enterprise: *enterprise || ull       # 推送的目标仓库所在的企业信息。
    }
    

    相关文章

      网友评论

          本文标题:基于gitee 的webhook 的python 处理

          本文链接:https://www.haomeiwen.com/subject/fzqjfdtx.html