Files
novalon-website/test-wechat-notify-heredoc.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

64 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# 测试企业微信通知脚本(使用 heredoc)
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=bb7efcdc-c32f-47b7-a437-d76cab9fba74"
# 模拟 CI 环境变量
STATUS="failure"
BRANCH="release/v1.0.0"
COMMIT="test456"
MESSAGE="fix: 使用--ignore-scripts跳过husky并修复企业微信通知
- 使用 npm ci --omit=dev --ignore-scripts 跳过所有脚本
- 本地验证 husky 问题已解决
- 本地验证企业微信通知成功
- 将换行符替换为空格,避免 shell 解析错误"
AUTHOR="zhangxiang"
PIPELINE_NUMBER="13"
REPO_ID="1"
PIPELINE_URL="https://ci.f.novalon.cn/repos/${REPO_ID}/pipeline/${PIPELINE_NUMBER}"
if [ "$STATUS" = "success" ]; then
STATUS_TEXT="成功"
STATUS_COLOR="info"
else
STATUS_TEXT="失败"
STATUS_COLOR="warning"
fi
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# 简化处理:移除换行符和引号
MESSAGE_CLEAN=$(echo "$MESSAGE" | tr '\n' ' ' | tr '"' "'")
echo "发送企业微信通知..."
echo "状态: $STATUS_TEXT"
echo "分支: $BRANCH"
echo "提交: $COMMIT"
echo "作者: $AUTHOR"
echo "MESSAGE_CLEAN: $MESSAGE_CLEAN"
echo ""
# 使用 heredoc 构建 JSON,避免复杂的转义
JSON_DATA=$(cat <<EOF
{
"msgtype": "markdown",
"markdown": {
"content": "## 🚀 Novalon Website 部署通知\n\n> **构建状态**: <font color=\"${STATUS_COLOR}\">${STATUS_TEXT}</font>\n\n**项目信息**\n> 分支: \`${BRANCH}\`\n> 提交: \`${COMMIT}\`\n> 作者: ${AUTHOR}\n\n**提交信息**\n> ${MESSAGE_CLEAN}\n\n**操作**\n> [查看构建详情](${PIPELINE_URL})\n\n---\n> 时间: ${TIMESTAMP}\n> Pipeline #${PIPELINE_NUMBER}"
}
}
EOF
)
echo "JSON_DATA:"
echo "$JSON_DATA"
echo ""
curl -X POST "$WEBHOOK_URL" \
-H 'Content-Type: application/json' \
-d "$JSON_DATA"
echo ""
echo "通知发送完成!"