我是靠谱客的博主 优雅小甜瓜,最近开发中收集的这篇文章主要介绍Git操作自动触发企业微信机器人webhook,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

[本文出自天外归云的博客园]

背景

在git做一些merge或push的操作,我们希望可以自动在企业微信群发送自定义的通知。

服务代码

这里选用php作为网络服务的开发语言,关键的代码如下(githook函数就是对应webhook的服务函数):

<?php
class tools extends CI_Controller
{
    function __construct()
    {
        parent::__construct(false);
        $this->load->helper('url');
        $dir = APPPATH . "config/conf";
        $confFile = "{$dir}/autotestconf.json";
        $this->load->library('conffile');
        $this->confData = $this->conffile->getConfData($confFile);
        $this->nav_top = $this->conffile->get_nav_top($this->confData);
        $this->load->database();
        $this->load->model("tools/tools_model");
    }

    // 代码CodeReview自动企业微信报告服务等githook服务
    // 请求路径:http://localhost/cloud/tools/githook
    function githook()
    {
        $key = $this->input->get('key');
        $post_data = file_get_contents("php://input");
        $post_data_std_class = json_decode($post_data);
        $curl = curl_init();
        if ($post_data_std_class->object_kind == "merge_request") {
            if ($post_data_std_class->object_attributes->target_branch != "master") {
                return;
            }
            $commitUrl = $post_data_std_class->object_attributes->url;
            $postFields = "{rn    "msgtype": "text",rn    "text": {rn        "content": "" . $post_data_std_class->user->username . " " . $post_data_std_class->object_attributes->action . " Merge Request " . $commitUrl . "nnFrom " . $post_data_std_class->object_attributes->source_branch . " To " . $post_data_std_class->object_attributes->target_branch . "nTitle: " . $post_data_std_class->object_attributes->title . "nDescription:n" . $post_data_std_class->object_attributes->description . ""rn    }rn}";
        } else if ($post_data_std_class->object_kind == "push") {
            $branch = substr($post_data_std_class->ref, 11);
            if ($branch != "master") {
                return;
            }
            $commitMessage = "【".$post_data_std_class->commits[0]->message."】";
            $http_url = substr($post_data_std_class->repository->git_http_url, 0, -4);
            $commitUrl = $http_url . "/commits/" . $branch;
            $postFields = "{rn    "msgtype": "text",rn    "text": {rn        "content": "" . $post_data_std_class->user_name . " Push To " . $commitUrl . "nn" . $commitMessage . " "rn    }rn}";
        }
        curl_setopt_array($curl, array(
            CURLOPT_URL => "http://in.qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" . $key,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => $postFields,
            CURLOPT_HTTPHEADER => array(
                "Cache-Control: no-cache",
            ),
            CURLOPT_SSL_VERIFYHOST => 0,
            CURLOPT_SSL_VERIFYPEER => 0,
        ));
        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);

        if ($err) {
            echo "cURL Error #:" . $err;
        } else {
            echo $response;
        }
    }
}

Git配置

在git项目Setting-Advanced Settings-Web Hooks中勾选Trigger(触发条件)-Add Web Hook(把自己的网络服务请求地址填上去,也就是上面的githook函数的请求地址):

请求url带的参数key为企业微信机器人的webhook地址(在企业微信群创建企业微信机器人后即可看到该地址)。

至此就可以在指定trigger被触发(比如有人进行了push操作)时,自动发送你服务函数中自定义的消息体到指定webhook的企业微信群。

注意:git操作触发的消息内容在请求的post body中,而我们自己传的key在请求的get参数中。

 

转载于:https://www.cnblogs.com/LanTianYou/p/10395678.html

最后

以上就是优雅小甜瓜为你收集整理的Git操作自动触发企业微信机器人webhook的全部内容,希望文章能够帮你解决Git操作自动触发企业微信机器人webhook所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部