Jenkins+飛書(shū)機(jī)器人發(fā)送通知

?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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容