#!/bin/bash # 测试企业微信通知脚本(使用 heredoc) 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="test456" MESSAGE="fix: 使用--ignore-scripts跳过husky并修复企业微信通知 - 使用 npm ci --omit=dev --ignore-scripts 跳过所有脚本 - 本地验证 husky 问题已解决 - 本地验证企业微信通知成功 - 将换行符替换为空格,避免 shell 解析错误" AUTHOR="zhangxiang" PIPELINE_NUMBER="13" 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 '"' "'") echo "发送企业微信通知..." echo "状态: $STATUS_TEXT" echo "分支: $BRANCH" echo "提交: $COMMIT" echo "作者: $AUTHOR" echo "MESSAGE_CLEAN: $MESSAGE_CLEAN" echo "" # 使用 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}" } } EOF ) echo "JSON_DATA:" echo "$JSON_DATA" echo "" curl -X POST "$WEBHOOK_URL" \ -H 'Content-Type: application/json' \ -d "$JSON_DATA" echo "" echo "通知发送完成!"