diff --git a/.github/workflows/close-issue-on-pr-merge.yml b/.github/workflows/close-issue-on-pr-merge.yml index 9e2d126..5ba88dc 100644 --- a/.github/workflows/close-issue-on-pr-merge.yml +++ b/.github/workflows/close-issue-on-pr-merge.yml @@ -91,6 +91,11 @@ jobs: env: TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} + # 经 env 注入,避免 Issue 标题等含引号/换行/$ 时被写入 run 脚本导致截断或语法错误 + ISSUE_NUM: ${{ steps.pr.outputs.ISSUE_NUMBER }} + ISSUE_TITLE: ${{ steps.issue.outputs.title }} + ISSUE_URL: ${{ steps.issue.outputs.url }} + PR_URL: ${{ github.event.pull_request.html_url }} run: | # 与 docker-build 一致:未配置则跳过 if [ -z "$TELEGRAM_BOT_TOKEN" ] || [ -z "$TELEGRAM_CHAT_ID" ]; then @@ -98,13 +103,12 @@ jobs: exit 0 fi - ISSUE_NUM="${{ steps.pr.outputs.ISSUE_NUMBER }}" - ISSUE_TITLE="${{ steps.issue.outputs.title }}" - ISSUE_URL="${{ steps.issue.outputs.url }}" - PR_URL="${{ github.event.pull_request.html_url }}" - - # 与 docker-build 相同的 HTML 消息格式 - MESSAGE="✅ AI 修复的 Issue 已关闭"$'\n'$'\n'"🔢 Issue: #${ISSUE_NUM} ${ISSUE_TITLE}"$'\n'"📎 查看 Issue"$'\n'"🔗 查看 PR" + MESSAGE=$(jq -n -r \ + --arg num "$ISSUE_NUM" \ + --arg title "$ISSUE_TITLE" \ + --arg iu "$ISSUE_URL" \ + --arg pu "$PR_URL" \ + '"✅ AI 修复的 Issue 已关闭\n\n🔢 Issue: #" + $num + " " + $title + "\n📎 查看 Issue\n🔗 查看 PR"') curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \ -H "Content-Type: application/json" \