?1. 在飛書(shū)群中添加自定義機(jī)器人
在飛書(shū)群中添加自定義機(jī)器人
2. Python發(fā)送通知的腳本
在部署Jenkins的服務(wù)器上創(chuàng)建一個(gè)目錄,名稱隨意,創(chuàng)建feizhutongzhi.py腳本文件,需要將你的webhook地址拷貝到腳本中的url中。
思路是找出jenkins的內(nèi)置變量,將jenkins內(nèi)置變量定義為python腳本系統(tǒng)變量(sys.argv[1]),運(yùn)行腳本的時(shí)候?qū)enkins 幾個(gè)變量按順序穿給腳本輸出。所有項(xiàng)目可以共用一個(gè)腳本
1. 郵件的配置變量
${GIT_BRANCH} - build 的 Git 分支
${FILE,path="xxx"} - xxx 為指定的文件,文件內(nèi)容可以在郵件中顯示。注意:xxx 是工作區(qū)目錄的相對(duì)路徑,不是絕對(duì)路徑。
${JOB_DESCRIPTION} - 顯示項(xiàng)目描述。
${BUILD_NUMBER} - 顯示當(dāng)前構(gòu)建的編號(hào)。
${SVN_REVISION} - 顯示 svn 版本號(hào)。還支持 Subversion 插件出口的 SVN_REVISION_n 版本。
${CAUSE} - 顯示誰(shuí)、通過(guò)什么渠道觸發(fā)這次構(gòu)建。
${CHANGES } - 顯示上一次構(gòu)建之后的變化。
${BUILD_ID} - 顯示當(dāng)前構(gòu)建生成的ID。
${PROJECT_NAME} - 顯示項(xiàng)目的全名。
${PROJECT_DISPLAY_NAME} - 顯示項(xiàng)目的顯示名稱。
$ {SCRIPT} - 從一個(gè)腳本生成自定義消息內(nèi)容。自定義腳本應(yīng)該放在 "$JENKINS_HOME/email-templates"。當(dāng)使用自定義腳本時(shí)會(huì)默認(rèn)搜索 $JENKINS_HOME/email-templatesdirectory 目錄。其他的目錄將不會(huì)被搜索。
${JENKINS_URL} - 顯示 Jenkins 服務(wù)器的 url 地址(可以在系統(tǒng)配置頁(yè)更改)。
${BUILD_LOG_MULTILINE_REGEX} - 按正則表達(dá)式匹配并顯示構(gòu)建日志。
${BUILD_LOG} - 顯示最終構(gòu)建日志。
${PROJECT_URL} - 顯示項(xiàng)目的URL地址。
${BUILD_STATUS} - 顯示當(dāng)前構(gòu)建的狀態(tài)(失敗、成功等等)。
${BUILD_URL} - 顯示當(dāng)前構(gòu)建的URL地址。
${CHANGES_SINCE_LAST_SUCCESS} - 顯示上一次成功構(gòu)建之后的變化。
${CHANGES_SINCE_LAST_UNSTABLE} - 顯示顯示上一次不穩(wěn)固或者成功的構(gòu)建之后的變化。
${ENV} - 顯示一個(gè)環(huán)境變量。
${FAILED_TESTS} - 如果有失敗的測(cè)試,顯示這些失敗的單元測(cè)試信息。
${PROJECT_URL} - 顯示項(xiàng)目的 URL。
$ {JELLY_SCRIPT} - 從一個(gè)Jelly腳本模板中自定義消息內(nèi)容。有兩種模板可供配置:HTML和TEXT。你可以在 $JENKINS_HOME/email-templates 下自定義替換它。當(dāng)使用自動(dòng)義模板時(shí),”template”參數(shù)的名稱不包含“.jelly”。
${TEST_COUNTS} - 顯示測(cè)試的數(shù)量。
#!/usr/bin/env python
#-*- encoding:utf-8 -*-
import sys
import requests
import time
JOB_URL = sys.argv[1]
JOB_NAME = sys.argv[2]
BUILD_NUMBER = sys.argv[3]
GIT_BRANCH= sys.argv[4]
currenttime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
url = '你的webhook地址'
method = 'post'
headers = {
? ? 'Content-Type': 'application/json'
}
json = {
? ? "msg_type": "interactive",
? ? "card": {
? ? ? ? "config": {
? ? ? ? ? ? "wide_screen_mode": True,
? ? ? ? ? ? "enable_forward": True
? ? ? ? },
? ? ? ? "elements": [{
? ? ? ? ? ? "tag": "div",
? ? ? ? ? ? "text": {
? ? ? ? ? ? ? ? "content": "項(xiàng)目名稱:" + JOB_NAME + "\n構(gòu)建編號(hào):第" + BUILD_NUMBER + "次構(gòu)建\n運(yùn)行時(shí)間:" + currenttime + "\n分支:" + GIT_BRANCH,
? ? ? ? ? ? ? ? "tag": "lark_md"
? ? ? ? ? ? }
? ? ? ? }, {
? ? ? ? ? ? "actions": [{
? ? ? ? ? ? ? ? "tag": "button",
? ? ? ? ? ? ? ? "text": {
? ? ? ? ? ? ? ? ? ? "content": "查看報(bào)告",
? ? ? ? ? ? ? ? ? ? "tag": "lark_md"
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? "url": JOB_URL,
? ? ? ? ? ? ? ? "type": "default",
? ? ? ? ? ? ? ? "value": {}
? ? ? ? ? ? }],
? ? ? ? ? ? "tag": "action"
? ? ? ? }],
? ? ? ? "header": {
? ? ? ? ? ? "title": {
? ? ? ? ? ? ? ? "content": JOB_NAME + " 構(gòu)建報(bào)告",
? ? ? ? ? ? ? ? "tag": "plain_text"
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
requests.request(method=method, url=url, headers=headers, json=json)
運(yùn)行Python腳本語(yǔ)言需要一些環(huán)境,我使用Python3
?yum install python3 python3-devel python3-pip
python3 -m pip install requests
3. Jenkins項(xiàng)目中添加配置
在配置中的構(gòu)建中 加上一行命令即可
python3 /var/lib/jenkins/feishuinfo/feishutongzhi.py $JOB_URL $JOB_NAME $BUILD_NUMBER $GIT_BRANCH
構(gòu)建完成之后,飛書(shū)群中就能收到對(duì)應(yīng)的消息:
點(diǎn)擊“查看報(bào)告”可以跳轉(zhuǎn)到Jenkins