diff --git a/.github/workflows/pr-agent.yml b/.github/workflows/pr-agent.yml index 3bd7cc18..bf95e81d 100644 --- a/.github/workflows/pr-agent.yml +++ b/.github/workflows/pr-agent.yml @@ -1,8 +1,9 @@ name: PR-Agent on: - # 使用 pull_request_target,让外部 PR 也能读取仓库 Secrets,并获得声明的写权限。 - # 本 workflow 不 checkout / 执行 PR 分支代码,只让 PR-Agent 通过 GitHub API 读取 diff。 + # 使用 pull_request_target 让同仓库与外部 fork PR 都能自动运行 PR-Agent, + # 并在 synchronize 事件跟进每次新 commit。 + # 本 workflow 不 checkout / 执行 PR 分支代码,只让 digest-pinned PR-Agent 镜像通过 GitHub API 读取 diff。 pull_request_target: types: [opened, reopened, ready_for_review, synchronize] issue_comment: @@ -10,17 +11,31 @@ on: jobs: pr_agent_job: - if: ${{ github.event.sender.type != 'Bot' && (github.event_name != 'issue_comment' || github.event.issue.pull_request) }} + # PR 与每次新 commit 自动运行;评论触发仍限制为可信成员,避免任意评论滥用 Secrets。 + if: >- + ${{ + github.event.sender.type != 'Bot' && + ( + github.event_name == 'pull_request_target' || + ( + github.event_name == 'issue_comment' && + github.event.issue.pull_request && + contains(fromJson('["OWNER","MEMBER","COLLABORATOR"]'), github.event.comment.author_association) + ) + ) + }} runs-on: ubuntu-latest permissions: + # PR-Agent 需要在 PR/issue 上评论,并通过 GitHub API 读取 diff/文件内容。 issues: write pull-requests: write contents: read steps: - name: Run PR Agent - uses: the-pr-agent/pr-agent@main + # Pin the actual PR-Agent container image because this job can access repo Secrets. + uses: docker://pragent/pr-agent@sha256:a0b36966ca3a197ca739fa1e65c16703076fc1c744cd423ca203b8c21707d71c env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}