fix: 修复CI/CD流程问题并建立监控机制

- 禁用Git LFS(项目未使用LFS)
- 修复企业微信通知环境变量展开问题
- 创建CI/CD诊断脚本
- 建立持续监控机制
- 添加预防措施文档

问题根本原因:
1. Woodpecker CI Git插件默认启用LFS,导致不必要的LFS命令执行
2. Shell脚本heredoc块内变量展开时机问题导致环境变量丢失

修复方案:
1. 在clone配置中添加 lfs: false
2. 将环境变量赋值移到单独的命令行,heredoc仅用于生成JSON

验证方法:
- 运行 diagnose-cicd-issues.sh 进行诊断
- 运行 scripts/monitoring/cicd-monitor.sh 进行监控
This commit is contained in:
张翔
2026-03-29 08:48:31 +08:00
parent 6f2ed1791b
commit 34ce9fb968
4 changed files with 471 additions and 24 deletions
+17 -24
View File
@@ -415,15 +415,14 @@ 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")
- |
BRANCH="${CI_COMMIT_BRANCH:-unknown}"
COMMIT="${CI_COMMIT_SHA:0:7}"
MESSAGE=$(echo "${CI_COMMIT_MESSAGE:-no message}" | tr '\n' ' ')
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 <<EOF
{
"msgtype": "markdown",
@@ -432,10 +431,7 @@ steps:
}
}
EOF
curl -X POST "$WECHAT_WEBHOOK" \
-H 'Content-Type: application/json' \
-d @/tmp/payload.json
- curl -X POST "$WECHAT_WEBHOOK" -H 'Content-Type: application/json' -d @/tmp/payload.json
when:
event:
- push
@@ -451,15 +447,14 @@ 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")
- |
BRANCH="${CI_COMMIT_BRANCH:-unknown}"
COMMIT="${CI_COMMIT_SHA:0:7}"
MESSAGE=$(echo "${CI_COMMIT_MESSAGE:-no message}" | tr '\n' ' ')
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 <<EOF
{
"msgtype": "markdown",
@@ -468,10 +463,7 @@ steps:
}
}
EOF
curl -X POST "$WECHAT_WEBHOOK" \
-H 'Content-Type: application/json' \
-d @/tmp/payload.json
- curl -X POST "$WECHAT_WEBHOOK" -H 'Content-Type: application/json' -d @/tmp/payload.json
when:
event:
- push
@@ -497,3 +489,4 @@ clone:
settings:
depth: 1
partial: false
lfs: false