Add feishu_notify.sh
This commit is contained in:
67
feishu_notify.sh
Normal file
67
feishu_notify.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# ===== 参数校验 =====
|
||||
: "${FEISHU_WEBHOOK:?FEISHU_WEBHOOK not set}"
|
||||
: "${JENKINS_USER:?JENKINS_USER not set}"
|
||||
: "${JENKINS_TOKEN:?JENKINS_TOKEN not set}"
|
||||
|
||||
# ===== 获取构建状态 =====
|
||||
getBuildState() {
|
||||
local buildNr=$1
|
||||
curl -s -u "${JENKINS_USER}:${JENKINS_TOKEN}" \
|
||||
"${JOB_URL}/${buildNr}/api/json" \
|
||||
| grep -Po '"result":\s*"\K\w+'
|
||||
}
|
||||
|
||||
BUILD_STATUS=$(getBuildState "$BUILD_NUMBER")
|
||||
|
||||
# ===== 状态标签 =====
|
||||
case "$BUILD_STATUS" in
|
||||
SUCCESS)
|
||||
STATUS_TAG="<text_tag color='turquoise'>通过</text_tag>"
|
||||
;;
|
||||
FAILURE)
|
||||
STATUS_TAG="<text_tag color='red'>失败</text_tag>"
|
||||
;;
|
||||
UNSTABLE)
|
||||
STATUS_TAG="<text_tag color='orange'>不稳定</text_tag>"
|
||||
;;
|
||||
*)
|
||||
STATUS_TAG="<text_tag color='neutral'>未知状态</text_tag>"
|
||||
;;
|
||||
esac
|
||||
|
||||
# ===== 变量整理 =====
|
||||
COMMIT_DIFF_URL="${BUILD_URL}changes"
|
||||
COMMIT_DIFF="[查看变更记录](${COMMIT_DIFF_URL})"
|
||||
|
||||
BUILD_TITLE="${JOB_NAME}"
|
||||
PUBLISH_ENVS="${PUBLISH_ENVS:-production}"
|
||||
BUILD_BRANCH="${GIT_BRANCH:-unknown}"
|
||||
TRIGGER_BY="${BUILD_USER:-unknown}"
|
||||
|
||||
# ===== 发送飞书通知 =====
|
||||
curl -s -X POST -H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"msg_type": "interactive",
|
||||
"card": {
|
||||
"type": "template",
|
||||
"data": {
|
||||
"template_id": "AAq2iv39m3lv5",
|
||||
"template_version_name": "1.0.5",
|
||||
"template_variable": {
|
||||
"build_title": "'"${BUILD_TITLE}"'",
|
||||
"status_tag": "'"${STATUS_TAG}"'",
|
||||
"build_number": "'"${BUILD_NUMBER}"'",
|
||||
"publish_envs": "'"${PUBLISH_ENVS}"'",
|
||||
"commit_diff": "'"${COMMIT_DIFF}"'",
|
||||
"build_branch": "'"${BUILD_BRANCH}"'",
|
||||
"trigger_by": "'"${TRIGGER_BY}"'",
|
||||
"build_url": {
|
||||
"url": "'"${BUILD_URL}"'"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}' "${FEISHU_WEBHOOK}"
|
||||
Reference in New Issue
Block a user