- 使用 heredoc 构建 JSON 数据,避免复杂的转义 - 为环境变量添加默认值,避免空值问题 - 简化 MESSAGE_CLEAN 处理,移除换行符和引号 - 本地测试验证成功
This commit is contained in:
+22
-15
@@ -420,13 +420,14 @@ steps:
|
||||
from_secret: wechat_webhook
|
||||
commands:
|
||||
- |
|
||||
STATUS="${CI_PIPELINE_STATUS}"
|
||||
BRANCH="${CI_COMMIT_BRANCH}"
|
||||
COMMIT="${CI_COMMIT_SHA:0:7}"
|
||||
MESSAGE="${CI_COMMIT_MESSAGE}"
|
||||
AUTHOR="${CI_COMMIT_AUTHOR}"
|
||||
PIPELINE_NUMBER="${CI_PIPELINE_NUMBER}"
|
||||
PIPELINE_URL="https://ci.f.novalon.cn/repos/${CI_REPO_ID}/pipeline/${PIPELINE_NUMBER}"
|
||||
STATUS="${CI_PIPELINE_STATUS:-unknown}"
|
||||
BRANCH="${CI_COMMIT_BRANCH:-unknown}"
|
||||
COMMIT="${CI_COMMIT_SHA:0:7:-unknown}"
|
||||
MESSAGE="${CI_COMMIT_MESSAGE:-no message}"
|
||||
AUTHOR="${CI_COMMIT_AUTHOR:-unknown}"
|
||||
PIPELINE_NUMBER="${CI_PIPELINE_NUMBER:-0}"
|
||||
REPO_ID="${CI_REPO_ID:-1}"
|
||||
PIPELINE_URL="https://ci.f.novalon.cn/repos/${REPO_ID}/pipeline/${PIPELINE_NUMBER}"
|
||||
|
||||
if [ "$STATUS" = "success" ]; then
|
||||
STATUS_TEXT="成功"
|
||||
@@ -438,17 +439,23 @@ steps:
|
||||
|
||||
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# 转义特殊字符(简化处理)
|
||||
MESSAGE_ESCAPED=$(echo "$MESSAGE" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | tr '\n' ' ')
|
||||
# 简化处理:移除换行符和引号
|
||||
MESSAGE_CLEAN=$(echo "$MESSAGE" | tr '\n' ' ' | tr '"' "'")
|
||||
|
||||
# 使用 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
|
||||
)
|
||||
|
||||
curl -X POST "$WECHAT_WEBHOOK" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"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_ESCAPED}\\n\\n**操作**\\n> [查看构建详情](${PIPELINE_URL})\\n\\n---\\n> 时间: ${TIMESTAMP}\\n> Pipeline #${PIPELINE_NUMBER}\"
|
||||
}
|
||||
}"
|
||||
-d "$JSON_DATA"
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
|
||||
Reference in New Issue
Block a user