Files
novalon-website/scripts/test-wechat-notify.sh
T
张翔 dd2a0999bb
ci/woodpecker/push/woodpecker Pipeline failed
fix: 修复企业微信通知环境变量展开问题
- 使用 PAYLOAD=$(cat <<ENDPAYLOAD) 替代 cat > file <<EOF
- 确保环境变量在 heredoc 中正确展开
- 添加测试脚本验证环境变量展开
- 修复构建详情链接和消息内容缺失问题
2026-03-28 22:48:22 +08:00

92 lines
2.7 KiB
Bash
Executable File

#!/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")
PAYLOAD=$(cat <<ENDPAYLOAD
{
"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}"
}
}
ENDPAYLOAD
)
echo "$PAYLOAD" > /tmp/payload.json
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