#!/bin/bash set -e echo "==========================================" echo "企业微信通知本地测试" echo "==========================================" echo "" # 检查是否提供了 webhook URL if [ -z "$WECHAT_WEBHOOK" ]; then echo "❌ 错误: 未设置 WECHAT_WEBHOOK 环境变量" echo "" echo "使用方法:" echo " export WECHAT_WEBHOOK='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY'" echo " ./scripts/test-wechat-notify.sh" echo "" echo "或者一行命令:" echo " WECHAT_WEBHOOK='your_webhook_url' ./scripts/test-wechat-notify.sh" exit 1 fi echo "✅ Webhook URL 已设置" echo "" # 设置测试环境变量 export CI_COMMIT_BRANCH="test-branch" export CI_COMMIT_SHA="abc123def456" export CI_COMMIT_MESSAGE="测试企业微信通知功能" export CI_COMMIT_AUTHOR="张翔" export CI_PIPELINE_NUMBER="999" export CI_REPO_ID="1" echo "📋 测试环境变量:" echo " CI_COMMIT_BRANCH: $CI_COMMIT_BRANCH" echo " CI_COMMIT_SHA: $CI_COMMIT_SHA" echo " CI_COMMIT_MESSAGE: $CI_COMMIT_MESSAGE" echo " CI_COMMIT_AUTHOR: $CI_COMMIT_AUTHOR" echo " CI_PIPELINE_NUMBER: $CI_PIPELINE_NUMBER" echo " CI_REPO_ID: $CI_REPO_ID" echo "" # 执行通知脚本 echo "🚀 发送测试通知..." echo "" # 使用与 .woodpecker.yml 中相同的脚本 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") PAYLOAD=$(cat < **构建状态**: 成功\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}" } } ENDPAYLOAD ) echo "$PAYLOAD" > /tmp/payload.json echo "📝 生成的 JSON 内容:" cat /tmp/payload.json | python3 -m json.tool echo "" echo "📤 发送请求..." RESPONSE=$(curl -s -X POST "$WECHAT_WEBHOOK" \ -H 'Content-Type: application/json' \ -d @/tmp/payload.json) echo "" echo "📥 响应:" echo "$RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE" echo "" # 检查响应 if echo "$RESPONSE" | grep -q '"errcode":0'; then echo "✅ 测试成功!企业微信通知已发送" echo "" echo "💡 请检查企业微信群聊是否收到消息" exit 0 else echo "❌ 测试失败!请检查 webhook URL 是否正确" exit 1 fi