zoukankan      html  css  js  c++  java
  • jenkins 设置钉钉机器人+jenkins调用shell脚本使用钉钉机器人自定义发消息并通知指定人

    两种钉钉通知方式,一种是使用安装的钉钉插件来通知,但是这个不好定义通知内容,没办法控制发送条件,只要配置了,不管构建参数(分支,渠道,配置),都会发通知,第二种是使用脚本的方式来通知,这个可以自定义通知内容(根据构建参数的变更发送消息)。可用于不同的场景。

    首先需要在钉钉群里设置下钉钉机器人:

    打开钉钉群设置以后,找到"智能群助手",如下:

     点击"智能群助手"后调到如下页面添加机器人:

     选择自定义机器人,进入机器人添加设置页面,机器人名字自定义,接收群组不可填写,就是当前钉钉群,安全设置,我选择的是自定义关键字,可以添加多个,然后点击完成以后,会生成一个webhook,记住webhook的token,待会需要这个token来发消息,我的机器人设置如下:

     

     钉钉群机器人就添加好了,接下来需要设置jenkins了,jenkins需要安装钉钉插件,可在jenkins的管理-》插件功能中搜索安装。

    场景1:钉钉群只需要知道构建结果和构建链接,其它不关心,可以使用jenkins上钉钉插件的方式来通知,设置如下

    (1)添加构建后操作,选择钉钉通知设置:

     (2)输入刚才的webhook对应的token,并选择合适发送通知,

     设置就那么简单,但是你的通知消息里必须包含钉钉设置里的"安全设置"中设置的关键字,否则消息不会发送成功。

    场景2:开发测试群里,大家只想知道构建后包的ftp归档路径,然后取路径包进行测试,至于构建链接和构建失败与否,并不关心,并且只需要给测试开发群发提测分支的构建即可,其它分支的构建不需要发消息

    这个不需要在jenkins上配置钉钉通知,使用jenkins调用shell脚本即可,脚本中可以控制何种参数配置发送,比如,我只想发端sdk是develop分支的时候发消息,脚本send_ding.sh可以这样写:

    #!bin/sh
    if [ "$phrepo" = "send_sdk" -a "$ph_branch" = "develop" ];then
        echo send ding ding message to send sdk group
        now_time=`date "+%Y%m%d%H%M"`
        commit=`git rev-parse --short HEAD`
        ph_branch=`echo $ph_branch_tmp |sed 's/.//g'` #删除分支名中的点符号
        now_time="$now_time"_"$ph_branch"_"$commit"_"$phoenix_type"  #设置路径格式:日期_分支_commitid_类型
        ding_ftp=ftp://192.168.8.1/output/ph_ftp_dir/$now_time/
        #使用curl来发送钉钉消息,消息内容是构建归档路径
        curl 'https://oapi.dingtalk.com/robot/send?access_token=123xxxxxxxxx' 
           -H 'Content-Type: application/json' 
              -d '{"msgtype": "text","text": {"content": "重构sdk出新包啦! '$ding_ftp'"}}'
    fi

    关键的是curl那句,就是来发送钉钉消息的,钉钉群消息结果如下:

     机器人图片可以自己设置,可以看出我的内容中包含了安全设置的“output”。

     另外,如何将消息通知到具体的某个人呢,我们看到钉钉开发文档中有如下描述:

     我们看上面图片,可以知道如何拼接shell脚本的curl通知,如下:

    curl 'https://oapi.dingtalk.com/robot/send?access_token=123xxxxxxxxx' 
           -H 'Content-Type: application/json' 
           -d '{"msgtype": "text","text": {"content": "重构sdk出新包啦! '$ding_ftp' @151xxxx6512 "},"at": {"atMobiles": ["151xxxx6512"],"isAtAll": false}}'
    注意:如果@前面是链接的话,必须加空格,之后再@151xxxx6512,所以,不管@前是什么,都加一个空格再接后面的@151xxxx6512
    结果如下:

     这样就可以具体通知到某个人了,如果要通知多个人,直接加号码就可以了,比如两个:

    @151xxxx4836 @151xxxx3452"},"at": {"atMobiles": ["151xxxx4836","151xxxx3452"],"isAtAll": false}

    另外,你可以结合定时构建,做到:在指定时间自动构建指定的jenkins配置,构建结束后给指定群发构建归档ftp路径,比如,我设置了发端sdk在下午两点和晚上九点,自动构建develop分支,构建结束后给发端sdk开发测试群发ftp包路径,设置如下:

    定时器设置:

     构建shell设置:

     下午2点和晚上九点,根据传入参数调用上面的脚本,配置任意你想用的内容,发送钉钉消息到钉钉群。

    钉钉和jenkins的配合使用,目前我了解的就这些了,如果你有更多新奇的玩法,欢迎留言。

    参考:https://blog.csdn.net/workdsz/article/details/77531802

    钉钉开发文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

  • 相关阅读:
    ural1018(树形dp)
    hdu1011(树形dp)
    poj1463(树形dp)
    poj1655(树形dp)
    poj1155(树形dp)
    hdu2196(树形dp)
    hdu1520(树形dp)
    hdu2126(求方案数的01背包)
    运用bootstrap框架的时候 引入文件的问题
    动态的改变标签内的src属性
  • 原文地址:https://www.cnblogs.com/zndxall/p/13993514.html
Copyright © 2011-2022 走看看