diff --git a/.woodpecker.yml b/.woodpecker.yml index 38333f8..3689edf 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -418,23 +418,20 @@ steps: - | BRANCH="${CI_COMMIT_BRANCH:-unknown}" COMMIT="${CI_COMMIT_SHA:0:7}" - MESSAGE=$(echo "${CI_COMMIT_MESSAGE:-no message}" | tr '\n' ' ' | sed 's/"/\\"/g') + 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") - PAYLOAD=$(cat < /tmp/payload.json < **构建状态**: 成功\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 + EOF curl -X POST "$WECHAT_WEBHOOK" \ -H 'Content-Type: application/json' \ @@ -457,23 +454,20 @@ steps: - | BRANCH="${CI_COMMIT_BRANCH:-unknown}" COMMIT="${CI_COMMIT_SHA:0:7}" - MESSAGE=$(echo "${CI_COMMIT_MESSAGE:-no message}" | tr '\n' ' ' | sed 's/"/\\"/g') + 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") - PAYLOAD=$(cat < /tmp/payload.json < **构建状态**: 失败\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 + EOF curl -X POST "$WECHAT_WEBHOOK" \ -H 'Content-Type: application/json' \ diff --git a/scripts/test-cat-heredoc.sh b/scripts/test-cat-heredoc.sh new file mode 100755 index 0000000..911097e --- /dev/null +++ b/scripts/test-cat-heredoc.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +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" + +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 和 heredoc,但确保变量展开 +cat > /tmp/payload.json < **构建状态**: 成功\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}" + } +} +EOF + +echo "==========================================" +echo "测试 cat heredoc 方法" +echo "==========================================" +echo "" +echo "环境变量:" +echo " BRANCH: $BRANCH" +echo " COMMIT: $COMMIT" +echo " MESSAGE: $MESSAGE" +echo " AUTHOR: $AUTHOR" +echo " PIPELINE_NUMBER: $PIPELINE_NUMBER" +echo " REPO_ID: $REPO_ID" +echo " TIMESTAMP: $TIMESTAMP" +echo "" +echo "生成的 JSON:" +cat /tmp/payload.json | python3 -m json.tool +echo "" +echo "✅ 测试完成!变量已正确展开" diff --git a/scripts/test-echo.sh b/scripts/test-echo.sh new file mode 100755 index 0000000..8a50fcb --- /dev/null +++ b/scripts/test-echo.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +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" + +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") + +CONTENT="## 🚀 Novalon Website 部署通知\n\n> **构建状态**: 成功\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}" + +echo "{\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"$CONTENT\"}}" > /tmp/payload.json + +echo "==========================================" +echo "测试 echo 方法" +echo "==========================================" +echo "" +echo "环境变量:" +echo " BRANCH: $BRANCH" +echo " COMMIT: $COMMIT" +echo " MESSAGE: $MESSAGE" +echo " AUTHOR: $AUTHOR" +echo " PIPELINE_NUMBER: $PIPELINE_NUMBER" +echo " REPO_ID: $REPO_ID" +echo " TIMESTAMP: $TIMESTAMP" +echo "" +echo "生成的 JSON:" +cat /tmp/payload.json | python3 -m json.tool +echo "" +echo "✅ 测试完成!变量已正确展开" diff --git a/scripts/test-printf.sh b/scripts/test-printf.sh new file mode 100755 index 0000000..8ea6139 --- /dev/null +++ b/scripts/test-printf.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +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" + +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") + +CONTENT="## 🚀 Novalon Website 部署通知\n\n> **构建状态**: 成功\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}" + +printf '{"msgtype":"markdown","markdown":{"content":"%s"}}' "$CONTENT" > /tmp/payload.json + +echo "==========================================" +echo "测试 printf 方法" +echo "==========================================" +echo "" +echo "环境变量:" +echo " BRANCH: $BRANCH" +echo " COMMIT: $COMMIT" +echo " MESSAGE: $MESSAGE" +echo " AUTHOR: $AUTHOR" +echo " PIPELINE_NUMBER: $PIPELINE_NUMBER" +echo " REPO_ID: $REPO_ID" +echo " TIMESTAMP: $TIMESTAMP" +echo "" +echo "生成的 JSON:" +cat /tmp/payload.json | python3 -m json.tool +echo "" +echo "✅ 测试完成!变量已正确展开"