GitHub Actions问题:workflow_dispatch与pull_request组合触发异常自动执行
解决GitHub Actions中workflow_dispatch与pull_request结合时自动触发的问题
你当前的工作流配置同时监听了pull_request(opened类型)和workflow_dispatch事件,而GitHub Actions的on字段中多个事件是逻辑或的关系——只要任意一个事件的触发条件满足,工作流就会自动运行。所以当有新PR打开时,pull_request事件触发,工作流就直接启动了,和workflow_dispatch的手动触发逻辑无关。
场景1:仅允许手动触发工作流,可针对指定PR运行
直接移除pull_request事件,只保留workflow_dispatch,并添加输入参数让你手动指定要处理的PR编号,就能精准拉取对应PR的代码:
name: Manual Workflow on PR on: workflow_dispatch: inputs: pr_number: description: '要处理的Pull Request编号' required: true type: number jobs: build: runs-on: ubuntu-latest steps: - name: 拉取PR代码 uses: actions/checkout@v4 with: ref: refs/pull/${{ inputs.pr_number }}/head # ... 你的后续构建/测试步骤
触发方式:在仓库的Actions页面找到该工作流,点击"Run workflow",输入目标PR的编号即可。
场景2:PR打开后需手动审批才触发工作流
如果希望PR打开时工作流进入等待状态,需要手动确认后再运行,可以保留pull_request事件,结合环境保护规则实现手动审批:
- 修改工作流配置,指定需要手动审批的环境:
name: Manual Approval Workflow on PR on: pull_request: types: - opened jobs: build: runs-on: ubuntu-latest environment: name: pr-approval # 自定义环境名称 steps: - name: 拉取代码 uses: actions/checkout@v4 # ... 你的后续步骤
- 进入仓库的
Settings->Environments页面,创建名为pr-approval的环境,开启Required reviewers,添加需要审批的人员/团队。
这样当PR打开时,工作流会自动触发但进入等待状态,只有指定人员审批通过后,才会执行后续步骤。
内容的提问来源于stack exchange,提问作者Mehdi Ben Hamida
相关产品推荐
相关产品推荐

