dd2a0999bb
ci/woodpecker/push/woodpecker Pipeline failed
- 使用 PAYLOAD=$(cat <<ENDPAYLOAD) 替代 cat > file <<EOF - 确保环境变量在 heredoc 中正确展开 - 添加测试脚本验证环境变量展开 - 修复构建详情链接和消息内容缺失问题
92 lines
2.7 KiB
Bash
Executable File
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
|