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 "通知发送完成!"