企業微信消息推送本質是向連接發送HTTP請求並發送消息
curl "https://qyapi.weixin.qq.com/cgi-bin/webhook/XXXXX" -H "Content-Type: application/json" -d '{"msgtype": "markdown","markdown": {"content":"<font color=\"info\">$JOB_NAME</font>構建<font color=\"info\">$result</font>\n>構建用時:<font color=\"comment\">3s</font>\n>[查看控制台]$BUILD_URL"}}'
# coding=gbk
#coding:utf-8
import requests
import json
import urllib.request
import urllib.error
import time,os
# 引用Jenkins全局變量
CONF_DONE=os.environ["CONF_DONE"] #獲取是構建是否成功
ProjectName=os.environ["JOB_NAME"]#獲取構建項目名稱
BUILD_URL=os.environ["BUILD_URL"]#獲取構建項目URL
BUILD_NUMBER=os.environ["BUILD_NUMBER"]#獲取構建編號,用於allure報告鏈接拼接
duration=os.environ["Elapsed"]#獲取構建耗時
#時間換算
def main():
millis = int(duration)
seconds=(millis/1000)%60
seconds = int(seconds)
minutes=(millis/(1000*60))%60
minutes = int(minutes)
hours=(millis/(1000*60*60))%24
print ("%d:%d:%d" % (hours, minutes, seconds))
return str("%d時%d分%d秒" % (hours, minutes, seconds))
headers = {"Content-Type": "text/plain"}
send_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/XXXXXXXXXXXXX"# 企業微信機器人的webhook
report=f"http://XXXXX:8080/job/{ProjectName}/{BUILD_NUMBER}/allure/" #allure報告地址
result=""
colour=""
if CONF_DONE=="0":
result="成功"
colour="info"
elif CONF_DONE=="1":
result = "失敗"
colour = "warning"
elif CONF_DONE=="2":
result = "中斷"
colour = "comment"
send_data = {
"msgtype": "markdown", # 消息類型,此時固定為markdown
"markdown": {
"content": f"**<font color=\"{colour}\">【{ProjectName}】</font>構建"+f"<font color=\"{colour}\">{result}</font>**!!!\r\n" + # 標題 (支持1至6級標題,注意#與文字中間要有空格)
f"> 項目名稱:<font color=\"{colour}\">{ProjectName}</font> \n" + # 引用:> 需要引用的文字
f"> 構件編號:<font color=\"{colour}\">#{BUILD_NUMBER}</font> \n" + # 引用:> 需要引用的文字
f"> 構建用時:<font color=\"{colour}\">{main()}</font> \n" + # 引用:> 需要引用的文字
f"[報告鏈接]({report})\n"+
f"[控制台]({BUILD_URL})"
# 加粗:**需要加粗的字**
}
}
res = requests.post(url=send_url, headers=headers, json=send_data)
print(res.text)