From c2b86acd098f09eddff860b1567b900508d73986 Mon Sep 17 00:00:00 2001 From: Timothy Yin Date: Sun, 8 Feb 2026 20:11:03 +0800 Subject: [PATCH] Add feishu_notify.sh --- feishu_notify.sh | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 feishu_notify.sh diff --git a/feishu_notify.sh b/feishu_notify.sh new file mode 100644 index 0000000..ba9fc47 --- /dev/null +++ b/feishu_notify.sh @@ -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="通过" + ;; + FAILURE) + STATUS_TAG="失败" + ;; + UNSTABLE) + STATUS_TAG="不稳定" + ;; + *) + STATUS_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}"