70 lines
1.8 KiB
Bash
70 lines
1.8 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# ===== 参数校验 =====
|
|
: "${FEISHU_WEBHOOK:?FEISHU_WEBHOOK not set}"
|
|
: "${JENKINS_API_CREDENTIAL:?JENKINS_API_CREDENTIAL not set}"
|
|
|
|
# ===== 获取构建状态 =====
|
|
getBuildState() {
|
|
local buildNr=$1
|
|
curl -s -u "${JENKINS_API_CREDENTIAL}" \
|
|
"${BUILD_URL}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>"
|
|
;;
|
|
ABORTED)
|
|
STATUS_TAG="<text_tag color='neutral'>已中止</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="${BRANCH_NAME:-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}"
|