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

如何配置GitHub Actions工作流,排除指定提交作者触发?

问题描述

现有如下GitHub Actions工作流配置:

name: CI
'on':
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
  workflow_dispatch:
jobs:
  lint:
    ...

  unit-test:
    ...

当前该工作流在每次提交时都会触发,无论提交作者是谁。请问能否配置该工作流,使其仅在提交作者不是指定用户(如user1)时触发?具体该如何配置?

解决方案

完全可以实现,核心是利用GitHub Actions的上下文变量获取提交/PR发起者信息,再通过if条件做反向过滤,以下是具体配置方式:

方式一:全局统一过滤(所有任务生效)

如果希望整个工作流的所有任务都只在非指定用户提交时运行,可以给每个任务添加if判断:

name: CI
'on':
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
  workflow_dispatch:
jobs:
  lint:
    if: github.event.pusher.name != 'user1' && github.event.pull_request.user.login != 'user1'
    # 原lint任务配置...

  unit-test:
    if: github.event.pusher.name != 'user1' && github.event.pull_request.user.login != 'user1'
    # 原unit-test任务配置...

方式二:区分事件类型优化(更严谨)

由于push和pull_request事件对应的上下文变量不同,直接混用可能导致变量不存在的报错,建议按事件类型分别判断,同时保留手动触发的权限:

name: CI
'on':
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
  workflow_dispatch:
jobs:
  lint:
    if: >
      (github.event_name == 'push' && github.event.pusher.name != 'user1') ||
      (github.event_name == 'pull_request' && github.event.pull_request.user.login != 'user1') ||
      github.event_name == 'workflow_dispatch'
    # 原lint任务配置...

  unit-test:
    if: >
      (github.event_name == 'push' && github.event.pusher.name != 'user1') ||
      (github.event_name == 'pull_request' && github.event.pull_request.user.login != 'user1') ||
      github.event_name == 'workflow_dispatch'
    # 原unit-test任务配置...

如果不需要手动触发时绕过限制,可以删除最后一行github.event_name == 'workflow_dispatch'。

额外补充

  • 要排除多个用户时,可用数组判断简化逻辑:比如!contains(['user1', 'user2'], github.event.pusher.name)(push事件)、!contains(['user1', 'user2'], github.event.pull_request.user.login)(PR事件)。
  • 手动触发时如需限制触发者,可添加判断:github.event.sender.login != 'user1'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:11:19