From 1e101183cac772e770a984cbe4a73991bb06f936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Sun, 29 Mar 2026 08:54:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DWoodpecker=20CI?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=A7=A3=E6=9E=90=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题根本原因: - YAML heredoc块格式导致解析器无法正确识别命令类型 - Pipeline #30 显示 'No pipeline steps available' 错误 修复方案: - 将企业微信通知逻辑移至独立脚本文件 scripts/notify-wechat.sh - 简化 .woodpecker.yml 中的通知步骤配置 - 使用标准shell脚本处理环境变量展开 验证: - YAML语法验证通过 - 命令类型检查通过(所有命令均为字符串类型) --- .woodpecker.yml | 38 ++++---------------------------------- scripts/notify-wechat.sh | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 34 deletions(-) create mode 100644 scripts/notify-wechat.sh diff --git a/.woodpecker.yml b/.woodpecker.yml index ac0b324..95e74c9 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -415,23 +415,8 @@ steps: WECHAT_WEBHOOK: from_secret: wechat_webhook commands: - - 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") - - | - cat > /tmp/payload.json < **构建状态**: 成功\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 - - curl -X POST "$WECHAT_WEBHOOK" -H 'Content-Type: application/json' -d @/tmp/payload.json + - chmod +x scripts/notify-wechat.sh + - WECHAT_WEBHOOK="$WECHAT_WEBHOOK" ./scripts/notify-wechat.sh success when: event: - push @@ -447,23 +432,8 @@ steps: WECHAT_WEBHOOK: from_secret: wechat_webhook commands: - - 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") - - | - cat > /tmp/payload.json < **构建状态**: 失败\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 - - curl -X POST "$WECHAT_WEBHOOK" -H 'Content-Type: application/json' -d @/tmp/payload.json + - chmod +x scripts/notify-wechat.sh + - WECHAT_WEBHOOK="$WECHAT_WEBHOOK" ./scripts/notify-wechat.sh failure when: event: - push diff --git a/scripts/notify-wechat.sh b/scripts/notify-wechat.sh new file mode 100644 index 0000000..950523b --- /dev/null +++ b/scripts/notify-wechat.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +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") +STATUS="${1:-success}" + +if [ "$STATUS" = "success" ]; then + STATUS_TEXT="成功" + STATUS_COLOR="info" +else + STATUS_TEXT="失败" + STATUS_COLOR="warning" +fi + +cat > /tmp/payload.json < **构建状态**: ${STATUS_TEXT}\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 + +curl -X POST "$WECHAT_WEBHOOK" \ + -H 'Content-Type: application/json' \ + -d @/tmp/payload.json