feat: 添加企业微信通知本地测试脚本
ci/woodpecker/push/woodpecker Pipeline failed

- 支持在本地测试企业微信通知功能
- 显示生成的 JSON 内容和响应结果
- 方便调试和验证通知配置
This commit is contained in:
张翔
2026-03-28 22:29:16 +08:00
parent 6797a1ee2d
commit 5a27d2fc2a
+88
View File
@@ -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 <<EOF
{
"msgtype": "markdown",
"markdown": {
"content": "## 🚀 Novalon Website 部署通知\n\n> **构建状态**: <font color=\"info\">成功</font>\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