给gitlab整个MR企微提醒机器人

277 阅读1分钟

添加企业微信MR提醒机器人(钉钉大差不差)

  1. 首先准备一个机器人,记住其webhook地址

image.png

  1. 我们gitlab仓库是已经开通gitlab-runner了的,直接编写.gitlab-ci.yml配置,在mr的时候触发脚本
# 发起mr时,通知到群聊
merge_request_notify:
    tags:
    # 这个tag其实就是指定容器可以在gitlab仓库的setting - CI/CD 展示Runner就可以看到了
        - xxx-tag
        # 因为不确定大家的runner有没有装nodejs或者python那些脚本语言,我这里用了shell脚本去写,shell脚本的移植性是好一点
    script:
        - sh notify.sh $CI_MERGE_REQUEST_PROJECT_PATH $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME $CI_MERGE_REQUEST_TARGET_BRANCH_NAME $CI_MERGE_REQUEST_PROJECT_URL $CI_MERGE_REQUEST_IID $CI_MERGE_REQUEST_LABELS
    only:
        - merge_requests

image.png

  1. 编写notify脚本,让机器人发送提示信息(企微为例)
#!/bin/bash

function notify()
{
    echo project:$1
    echo branch:$2 -> $3
    echo link:$4/-/merge_requests/$5
    echo $KEY
    cmd=`
    # 如果是钉钉可以整成钉钉机器人的链接和格式,这里的例子是企微
    curl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=$KEY" \
        -H 'Content-Type: application/json' \
        -d "
        {
                \"msgtype\": \"text\",
                \"text\": {
                    \"content\": \"有新的合并请求,大家审一审吧\n\n      仓库: $1\n      分支: $2 合到 $3\n      链接: $4/-/merge_requests/$5 \",
                    \"mentioned_mobile_list\":[$USER_MOBILE_LIST]
                }
        }"
    `
}
# 下面是使用例子,比如根据不同的label,给不同的群发送群消息,或者做不同的操作
if [[ "$6" == *"labelA"* ]]; then
    # 机器人的key
    KEY=""
    # 加上要@那些人的企微注册的手机号,提醒你讨厌的人
    # USER_MOBILE_LIST="1341234567,1334422244"
    notify "$1" "$2" "$3" "$4"
    echo "labelA"
fi
if [[ "$6" == *"labelB"* ]]; then
    echo "labelB"
fi
if [[ "$6" == *"labelC"* ]]; then
    echo "labelC"
fi
if [[ "$6" == *"labelD"* ]]; then
    echo "labelD"
fi
if [[ "$6" == *"labelE"* ]]; then
    echo "labelE"
fi