fix: 修复企业微信通知环境变量展开问题
ci/woodpecker/push/woodpecker Pipeline failed

- 使用 PAYLOAD=$(cat <<ENDPAYLOAD) 替代 cat > file <<EOF
- 确保环境变量在 heredoc 中正确展开
- 添加测试脚本验证环境变量展开
- 修复构建详情链接和消息内容缺失问题
This commit is contained in:
张翔
2026-03-28 22:48:22 +08:00
parent 5a27d2fc2a
commit dd2a0999bb
35 changed files with 2728 additions and 915 deletions
+46
View File
@@ -0,0 +1,46 @@
#!/bin/bash
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"
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 "=========================================="
echo "测试环境变量展开"
echo "=========================================="
echo ""
echo "环境变量:"
echo " BRANCH: $BRANCH"
echo " COMMIT: $COMMIT"
echo " MESSAGE: $MESSAGE"
echo " AUTHOR: $AUTHOR"
echo " PIPELINE_NUMBER: $PIPELINE_NUMBER"
echo " REPO_ID: $REPO_ID"
echo " TIMESTAMP: $TIMESTAMP"
echo ""
echo "生成的 JSON:"
cat /tmp/payload.json | python3 -m json.tool
echo ""
echo "✅ 测试完成!变量已正确展开"
+5 -2
View File
@@ -53,14 +53,17 @@ 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
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}"
}
}
EOF
ENDPAYLOAD
)
echo "$PAYLOAD" > /tmp/payload.json
echo "📝 生成的 JSON 内容:"
cat /tmp/payload.json | python3 -m json.tool