- 将 notify-wechat 拆分为 notify-wechat-success 和 notify-wechat-failure - 使用 when.status 条件分别处理成功和失败的情况 - 移除对 CI_PIPELINE_STATUS 环境变量的依赖(该变量在 Woodpecker CI 中不可用) - 简化 JSON 构建逻辑,直接硬编码状态文本和颜色
This commit is contained in:
+42
-13
@@ -413,14 +413,13 @@ steps:
|
|||||||
# ============================================
|
# ============================================
|
||||||
# 阶段7: 企业微信通知
|
# 阶段7: 企业微信通知
|
||||||
# ============================================
|
# ============================================
|
||||||
notify-wechat:
|
notify-wechat-success:
|
||||||
image: curlimages/curl:latest
|
image: curlimages/curl:latest
|
||||||
environment:
|
environment:
|
||||||
WECHAT_WEBHOOK:
|
WECHAT_WEBHOOK:
|
||||||
from_secret: wechat_webhook
|
from_secret: wechat_webhook
|
||||||
commands:
|
commands:
|
||||||
- |
|
- |
|
||||||
STATUS="${CI_PIPELINE_STATUS:-unknown}"
|
|
||||||
BRANCH="${CI_COMMIT_BRANCH:-unknown}"
|
BRANCH="${CI_COMMIT_BRANCH:-unknown}"
|
||||||
COMMIT="${CI_COMMIT_SHA:0:7:-unknown}"
|
COMMIT="${CI_COMMIT_SHA:0:7:-unknown}"
|
||||||
MESSAGE="${CI_COMMIT_MESSAGE:-no message}"
|
MESSAGE="${CI_COMMIT_MESSAGE:-no message}"
|
||||||
@@ -429,25 +428,15 @@ steps:
|
|||||||
REPO_ID="${CI_REPO_ID:-1}"
|
REPO_ID="${CI_REPO_ID:-1}"
|
||||||
PIPELINE_URL="https://ci.f.novalon.cn/repos/${REPO_ID}/pipeline/${PIPELINE_NUMBER}"
|
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")
|
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
# 简化处理:移除换行符和引号
|
|
||||||
MESSAGE_CLEAN=$(echo "$MESSAGE" | tr '\n' ' ' | tr '"' "'")
|
MESSAGE_CLEAN=$(echo "$MESSAGE" | tr '\n' ' ' | tr '"' "'")
|
||||||
|
|
||||||
# 使用 heredoc 构建 JSON,避免复杂的转义
|
|
||||||
JSON_DATA=$(cat <<EOF
|
JSON_DATA=$(cat <<EOF
|
||||||
{
|
{
|
||||||
"msgtype": "markdown",
|
"msgtype": "markdown",
|
||||||
"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}"
|
"content": "## 🚀 Novalon Website 部署通知\n\n> **构建状态**: <font color=\"info\">成功</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
|
EOF
|
||||||
@@ -464,6 +453,46 @@ steps:
|
|||||||
- release/**
|
- release/**
|
||||||
status:
|
status:
|
||||||
- success
|
- success
|
||||||
|
|
||||||
|
notify-wechat-failure:
|
||||||
|
image: curlimages/curl:latest
|
||||||
|
environment:
|
||||||
|
WECHAT_WEBHOOK:
|
||||||
|
from_secret: wechat_webhook
|
||||||
|
commands:
|
||||||
|
- |
|
||||||
|
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}"
|
||||||
|
|
||||||
|
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
|
MESSAGE_CLEAN=$(echo "$MESSAGE" | tr '\n' ' ' | tr '"' "'")
|
||||||
|
|
||||||
|
JSON_DATA=$(cat <<EOF
|
||||||
|
{
|
||||||
|
"msgtype": "markdown",
|
||||||
|
"markdown": {
|
||||||
|
"content": "## 🚀 Novalon Website 部署通知\n\n> **构建状态**: <font color=\"warning\">失败</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 "$JSON_DATA"
|
||||||
|
when:
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
branch:
|
||||||
|
- release
|
||||||
|
- release/**
|
||||||
|
status:
|
||||||
- failure
|
- failure
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
|
|||||||
Reference in New Issue
Block a user