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

如何通过设置仅允许受保护分支运行GitHub Actions?

如何无需修改工作流文件限制GitHub Actions仅在受保护分支运行

核心解决方案:用仓库级设置替代工作流内的if条件

因为开发者能修改分支内的工作流文件,所以必须通过管理员可控的仓库设置来限制Actions的运行范围,以下是几种靠谱的实现方式:

1. 利用仓库规则集(Repository Rulesets)限制分支Actions运行

这是最直接的方式,管理员可以给非受保护分支设置禁止Actions的规则:

  • 进入仓库「Settings」→「Code and automation」→「Rulesets」
  • 创建新规则集,选择应用到「所有分支」,然后排除受保护的main分支
  • 在规则里添加「Actions restrictions」,选择「Block all actions」
  • 保存规则后,除了main分支,其他分支的所有Actions都会被自动阻止,开发者没法通过修改工作流绕过

2. 用环境(Environments)锁定部署权限

如果只是要防止绕过PR直接部署,而非完全禁用其他分支的Actions,可以通过环境保护来限制部署步骤:

  • 进入仓库「Settings」→「Code and automation」→「Environments」,创建生产环境(比如production)
  • 在环境设置里开启「Deployment branches」,指定仅允许main分支部署到该环境;同时可以开启「Required reviewers」增加审核环节
  • 修改核心工作流,把部署步骤绑定到这个环境(工作流文件要放在main分支并设置保护,禁止开发者修改):
jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: production # 绑定到受保护环境
    steps:
      - uses: actions/checkout@v4
      # 后续部署步骤

这样即使开发者在自己分支运行工作流,部署步骤会因为不符合环境的分支限制而被拦截,且环境设置由管理员掌控。

3. 限制可运行的工作流来源

通过限制仅允许仓库内受保护分支的工作流运行,彻底杜绝开发者自定义工作流的滥用:

  • 进入仓库「Settings」→「Actions」→「General」
  • 找到「Allowed actions and reusable workflows」,选择「Allow select actions and reusable workflows」
  • 添加仓库内的工作流路径路径,比如指定仅允许main分支下的.github/workflows/**工作流
  • 同时禁用「Allow actions created by GitHub Marketplace authors」等不必要的选项,进一步缩小范围

配套的防护措施

  • 给main分支设置严格的分支保护规则:禁止直接推送,要求所有变更必须通过PR合并,且PR需要至少1个审核通过
  • 给.github/workflows/目录设置单独的分支保护规则,禁止开发者直接修改核心工作流文件,必须经过管理员审核

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:43:14