You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

推送更新Pull Request时检查已有评论并触发GitHub Workflow

解决方案

要在PR同步(synchronize)到develop分支时检查PR是否存在指定评论,你不能直接依赖github.event.pull_request_comment(该字段仅在评论创建/更新事件中存在),需要通过GitHub API主动查询PR的评论列表,再进行匹配判断。

具体实现步骤

  1. 保留原触发条件:保持Workflow在PR同步到develop时触发。
  2. 调用GitHub API获取PR评论:利用GitHub内置的GITHUB_TOKEN调用API拉取目标PR的所有评论。
  3. 过滤匹配指定评论内容:使用jq工具解析API返回的JSON数据,检查是否存在包含目标内容的评论。
  4. 根据检查结果控制Workflow后续执行:将检查结果设为输出变量,后续步骤通过if条件判断是否继续执行。

完整Workflow配置示例

name: Check PR Comment on Sync
on:
  pull_request:
    branches: [develop]
    types: [synchronize]

jobs:
  check-comment:
    runs-on: ubuntu-latest
    outputs:
      has_target_comment: ${{ steps.check.outputs.has_target_comment }}
    steps:
      - name: Check if target comment exists
        id: check
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          REPO: ${{ github.repository }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
          TARGET_COMMENT: "需要匹配的评论内容" # 替换成你要检查的评论文本
        run: |
          # 调用GitHub API获取PR评论
          RESPONSE=$(curl -s -H "Authorization: token $GH_TOKEN" \
            "https://api.github.com/repos/$REPO/issues/$PR_NUMBER/comments")
          
          # 使用jq过滤是否存在包含目标内容的评论
          MATCH=$(echo "$RESPONSE" | jq --arg TARGET "$TARGET_COMMENT" '.[] | .body | contains($TARGET)' | grep -q true && echo "true" || echo "false")
          
          # 设置输出变量
          echo "has_target_comment=$MATCH" >> $GITHUB_OUTPUT

  run-triggered-job:
    needs: check-comment
    if: ${{ needs.check-comment.outputs.has_target_comment == 'true' }}
    runs-on: ubuntu-latest
    steps:
      - name: Execute triggered task
        run: |
          echo "PR存在指定评论,触发后续任务"
          # 这里写你需要执行的操作

关键说明

  • 权限设置:GITHUB_TOKEN默认拥有pull-requests: read权限,足够获取PR评论列表,无需额外配置 secrets。
  • 匹配逻辑:示例中用contains()匹配包含目标文本的评论,你可以根据需求调整jq表达式(比如精确匹配用==)。
  • 输出变量传递:通过jobs.<job-id>.outputs将检查结果传递给后续任务,实现条件触发。

内容的提问来源于stack exchange,提问作者just_front

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:22:19