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