From 573d997a5ef9b8e9f771c5b8f7caad465d6f2cbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Sat, 28 Mar 2026 21:02:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8B=86=E5=88=86=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5=E6=AD=A5=E9=AA=A4=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E4=BD=BF=E7=94=A8CI=5FPIPELINE=5FSTATUS?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 notify-wechat 拆分为 notify-wechat-success 和 notify-wechat-failure - 使用 when.status 条件分别处理成功和失败的情况 - 移除对 CI_PIPELINE_STATUS 环境变量的依赖(该变量在 Woodpecker CI 中不可用) - 简化 JSON 构建逻辑,直接硬编码状态文本和颜色 --- .woodpecker.yml | 55 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 257c549..83be1b9 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -413,14 +413,13 @@ steps: # ============================================ # 阶段7: 企业微信通知 # ============================================ - notify-wechat: + notify-wechat-success: image: curlimages/curl:latest environment: WECHAT_WEBHOOK: from_secret: wechat_webhook commands: - | - STATUS="${CI_PIPELINE_STATUS:-unknown}" BRANCH="${CI_COMMIT_BRANCH:-unknown}" COMMIT="${CI_COMMIT_SHA:0:7:-unknown}" MESSAGE="${CI_COMMIT_MESSAGE:-no message}" @@ -429,25 +428,15 @@ steps: 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="成功" - 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 '"' "'") - # 使用 heredoc 构建 JSON,避免复杂的转义 JSON_DATA=$(cat < **构建状态**: ${STATUS_TEXT}\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> **构建状态**: 成功\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 @@ -464,6 +453,46 @@ steps: - release/** status: - 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 < **构建状态**: 失败\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 # ============================================