From 5a27d2fc2a9079036ee00eb42ee3784795fc0155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Sat, 28 Mar 2026 22:29:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5=E6=9C=AC=E5=9C=B0=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 支持在本地测试企业微信通知功能 - 显示生成的 JSON 内容和响应结果 - 方便调试和验证通知配置 --- scripts/test-wechat-notify.sh | 88 +++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100755 scripts/test-wechat-notify.sh diff --git a/scripts/test-wechat-notify.sh b/scripts/test-wechat-notify.sh new file mode 100755 index 0000000..eecc7e9 --- /dev/null +++ b/scripts/test-wechat-notify.sh @@ -0,0 +1,88 @@ +#!/bin/bash + +set -e + +echo "==========================================" +echo "企业微信通知本地测试" +echo "==========================================" +echo "" + +# 检查是否提供了 webhook URL +if [ -z "$WECHAT_WEBHOOK" ]; then + echo "❌ 错误: 未设置 WECHAT_WEBHOOK 环境变量" + echo "" + echo "使用方法:" + echo " export WECHAT_WEBHOOK='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY'" + echo " ./scripts/test-wechat-notify.sh" + echo "" + echo "或者一行命令:" + echo " WECHAT_WEBHOOK='your_webhook_url' ./scripts/test-wechat-notify.sh" + exit 1 +fi + +echo "✅ Webhook URL 已设置" +echo "" + +# 设置测试环境变量 +export CI_COMMIT_BRANCH="test-branch" +export CI_COMMIT_SHA="abc123def456" +export CI_COMMIT_MESSAGE="测试企业微信通知功能" +export CI_COMMIT_AUTHOR="张翔" +export CI_PIPELINE_NUMBER="999" +export CI_REPO_ID="1" + +echo "📋 测试环境变量:" +echo " CI_COMMIT_BRANCH: $CI_COMMIT_BRANCH" +echo " CI_COMMIT_SHA: $CI_COMMIT_SHA" +echo " CI_COMMIT_MESSAGE: $CI_COMMIT_MESSAGE" +echo " CI_COMMIT_AUTHOR: $CI_COMMIT_AUTHOR" +echo " CI_PIPELINE_NUMBER: $CI_PIPELINE_NUMBER" +echo " CI_REPO_ID: $CI_REPO_ID" +echo "" + +# 执行通知脚本 +echo "🚀 发送测试通知..." +echo "" + +# 使用与 .woodpecker.yml 中相同的脚本 +BRANCH="${CI_COMMIT_BRANCH:-unknown}" +COMMIT="${CI_COMMIT_SHA:0:7}" +MESSAGE=$(echo "${CI_COMMIT_MESSAGE:-no message}" | tr '\n' ' ' | sed 's/"/\\"/g') +AUTHOR="${CI_COMMIT_AUTHOR:-unknown}" +PIPELINE_NUMBER="${CI_PIPELINE_NUMBER:-0}" +REPO_ID="${CI_REPO_ID:-1}" +TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") + +cat > /tmp/payload.json < **构建状态**: 成功\n\n**项目信息**\n> 分支: \`${BRANCH}\`\n> 提交: \`${COMMIT}\`\n> 作者: ${AUTHOR}\n\n**提交信息**\n> ${MESSAGE}\n\n**操作**\n> [查看构建详情](https://ci.f.novalon.cn/repos/${REPO_ID}/pipeline/${PIPELINE_NUMBER})\n\n---\n> 时间: ${TIMESTAMP}\n> Pipeline #${PIPELINE_NUMBER}" + } +} +EOF + +echo "📝 生成的 JSON 内容:" +cat /tmp/payload.json | python3 -m json.tool +echo "" + +echo "📤 发送请求..." +RESPONSE=$(curl -s -X POST "$WECHAT_WEBHOOK" \ + -H 'Content-Type: application/json' \ + -d @/tmp/payload.json) + +echo "" +echo "📥 响应:" +echo "$RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE" +echo "" + +# 检查响应 +if echo "$RESPONSE" | grep -q '"errcode":0'; then + echo "✅ 测试成功!企业微信通知已发送" + echo "" + echo "💡 请检查企业微信群聊是否收到消息" + exit 0 +else + echo "❌ 测试失败!请检查 webhook URL 是否正确" + exit 1 +fi