diff --git a/.woodpecker.yml b/.woodpecker.yml
index a5c490a..d83300e 100644
--- a/.woodpecker.yml
+++ b/.woodpecker.yml
@@ -89,6 +89,7 @@ steps:
image: *node_image
environment:
NODE_ENV: production
+ HUSKY: 0
commands:
- npm ci --omit=dev
- npm audit --audit-level=high --omit=dev
@@ -413,13 +414,11 @@ steps:
# 阶段7: 企业微信通知
# ============================================
notify-wechat:
- image: alpine:latest
+ image: curlimages/curl:latest
environment:
WECHAT_WEBHOOK:
from_secret: wechat_webhook
commands:
- - echo "Sending notification to WeChat Work..."
- - apk add --no-cache curl
- |
STATUS="${CI_PIPELINE_STATUS}"
BRANCH="${CI_COMMIT_BRANCH}"
@@ -439,12 +438,15 @@ steps:
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
+ # 转义特殊字符
+ MESSAGE_ESCAPED=$(echo "$MESSAGE" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | tr '\n' '\\n')
+
curl -X POST "$WECHAT_WEBHOOK" \
-H 'Content-Type: application/json' \
-d "{
\"msgtype\": \"markdown\",
\"markdown\": {
- \"content\": \"## 🚀 Novalon Website 部署通知\\n\\n> **构建状态**: ${STATUS_TEXT}\\n\\n**项目信息**\\n> 分支: \`${BRANCH}\`\\n> 提交: \`${COMMIT}\`\\n> 作者: ${AUTHOR}\\n\\n**提交信息**\\n> ${MESSAGE}\\n\\n**操作**\\n> [查看构建详情](${PIPELINE_URL})\\n\\n---\\n> 时间: ${TIMESTAMP}\\n> Pipeline #${PIPELINE_NUMBER}\"
+ \"content\": \"## 🚀 Novalon Website 部署通知\\n\\n> **构建状态**: ${STATUS_TEXT}\\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}\"
}
}"
when:
diff --git a/test-wechat-notify.sh b/test-wechat-notify.sh
new file mode 100755
index 0000000..26d3875
--- /dev/null
+++ b/test-wechat-notify.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+# 测试企业微信通知脚本
+
+WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=bb7efcdc-c32f-47b7-a437-d76cab9fba74"
+
+# 模拟 CI 环境变量
+STATUS="failure"
+BRANCH="release/v1.0.0"
+COMMIT="test123"
+MESSAGE="fix: 修复安全漏洞并优化CI配置
+
+- 升级 Next.js 从 16.1.6 到 16.2.1 修复安全漏洞
+- 修改 security-scan 只检查生产依赖
+- 将 audit 级别从 moderate 改为 high
+- 生产依赖漏洞从 12个减少到 0个"
+AUTHOR="zhangxiang"
+PIPELINE_NUMBER="10"
+PIPELINE_URL="https://ci.f.novalon.cn/repos/1/pipeline/10"
+
+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_ESCAPED=$(echo "$MESSAGE" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
+
+echo "发送企业微信通知..."
+echo "状态: $STATUS_TEXT"
+echo "分支: $BRANCH"
+echo "提交: $COMMIT"
+echo "作者: $AUTHOR"
+
+curl -X POST "$WEBHOOK_URL" \
+ -H 'Content-Type: application/json' \
+ -d "{
+ \"msgtype\": \"markdown\",
+ \"markdown\": {
+ \"content\": \"## 🚀 Novalon Website 部署通知\\n\\n> **构建状态**: ${STATUS_TEXT}\\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}\"
+ }
+ }"
+
+echo ""
+echo "通知发送完成!"