当前位置:首页 > 文章列表 > 文章 > 软件教程 > GitHub Actions environments怎样给部署环境设置审批门槛

GitHub Actions environments怎样给部署环境设置审批门槛

来源:17golang原创 2026-11-04 11:41:40 0浏览 收藏

如果生产部署不能由每次提交自动直达,GitHub Actions 的 environments 可以把“是否允许继续”交给指定人员确认。做法是创建一个名为 production 的环境,打开 Required reviewers,再让部署 job 引用这个环境。运行到该 job 时,页面会显示 Waiting,审查者可以选择批准或拒绝。

官方地址:https://docs.github.com/en/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments

下面按 GitHub 网页中的入口顺序说明。文中的界面图是原创操作示意图,不是 GitHub 实际截图;workflow 片段用于展示配置关系,不代表已经在本机运行。

先确定审批应该卡在哪个 job

环境审批保护的是“引用该环境的 job”,不是整个 workflow 文件。通常把它放在构建和测试完成之后的部署 job 上:前面的检查先跑完,真正会接触生产资源的 job 再等待人工决定。

例如,build 负责准备产物,deploy-production 负责发布。只有后者写上 environment: production,production 环境的保护规则才会介入。环境规则通过前,环境中保存的 secrets 也不会提供给该 job。

创建 production 环境并打开保护规则

  1. 打开目标仓库,进入 Settings。
  2. 在左侧找到 Environments,选择 New environment。
  3. 输入环境名 production 并创建。
  4. 在该环境的 Environment protection rules 区域找到 Required reviewers。
  5. 添加负责审核发布的用户或团队;如果不希望发起者批准自己的部署,同时打开 Prevent self-review。
  6. 点击 Save protection rules 保存。
GitHub Actions production 环境设置页中配置 Required reviewers 的原创操作示意图
图1:production 环境保护规则的操作示意图,不是 GitHub 实际截图。

继续条件:环境名称是 production,审查者已经出现在规则列表中,并且保存按钮完成了设置。不要把个人令牌、云平台密钥或真实仓库信息放进说明图或示例文件。

Required reviewers 应该怎样选择

审查者可以是用户或团队,配置时优先选择真正能判断发布风险的人。一个团队多人时,流程重点是“由被列出的审查者完成确认”,而不是让所有成员逐个点击。GitHub 文档还说明,必需审查者规则最多可列出六个用户或团队,审查者至少需要对仓库有读取权限。

Prevent self-review 适合把提交者和审批者分开:发布由甲发起,乙确认后继续。若团队明确允许同一人自查自发,可以不打开它,但这会削弱审批门槛的独立性。

环境还可以配置分支限制、等待计时器或其它部署保护规则。本文只讨论人工审查;不要把等待计时器误认为审查,它只会延迟作业,并不会替代某个具体人员的批准。

让部署 job 引用 production 环境

环境创建好之后,workflow 需要在部署 job 上写出同名的 environment。名称必须与网页里创建的环境完全一致,大小写和空格也要保持一致。

name: deploy

on:
  push:
    branches: [main] # 只让主分支的变更进入这个示例流程

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4 # 拉取仓库内容,供后续构建使用
      - name: 构建发布产物
        run: npm run build # 示例命令,替换成项目自己的构建命令

  deploy-production:
    needs: build # 构建成功后才进入部署 job
    runs-on: ubuntu-latest
    environment:
      name: production # 绑定网页中创建的受保护环境
    steps:
      - name: 发布到生产环境
        run: ./scripts/deploy.sh # 审批通过后才会执行发布动作

这里的关键不是 name 字段本身,而是 job 级别的 environment.name。当 deploy-production 走到环境规则时,作业会暂停;审批通过后才继续执行后面的发布步骤,并按环境规则提供相应 secrets。

在 Actions 运行页找到 Waiting 状态

  1. 打开仓库的 Actions,进入刚刚触发的 workflow run。
  2. 找到 deploy-production job;如果它已到达受保护环境,状态会显示为 Waiting 或待处理。
  3. 在部署保护区域点击 Review deployments。
  4. 选中 production,阅读本次变更说明或关联的检查结果。
  5. 确认发布时点击 Approve and deploy;不允许发布时点击 Reject。
GitHub Actions 部署 job 在 production 环境等待人工审批的原创结果示意图
图2:部署等待人工审批的结果示意图,不是运行截图。

批准后,job 才会继续执行部署步骤;拒绝则会使这次 workflow 失败。若环境开启了禁止自审,发起该 workflow 的用户即使出现在审查者列表里,也不能批准自己的部署。

审批门槛不生效时先查这五项

现象优先检查处理方向
job 直接运行,没有 Waitingjob 是否引用了环境确认写的是 job 级别 environment: production,并且名称与设置页一致。
看不到 Required reviewers仓库可见性与计划GitHub 文档对私有或内部仓库的环境能力有计划要求;按当前账户计划和仓库类型检查可用范围。
审查者无法批准读取权限或禁止自审确认审查者至少有仓库读取权限;如果是发起者本人,检查是否打开了 Prevent self-review。
批准后仍没有发布其它保护规则与 job 依赖检查等待计时器、其它部署保护规则,以及 needs 依赖是否仍未满足。
环境 secrets 为空规则是否已经通过环境 secrets 要在保护规则通过后才对关联 job 可用,不要在审批前假定它们已经注入。

一份可以保存的配置清单

  • 网页设置:存在 production 环境,并已保存 Required reviewers。
  • workflow 绑定:部署 job 使用 environment.name: production,不是只在 workflow 名称里写 production。
  • 审批职责:审查者有读取权限,且团队已决定是否禁止发起者自审。
  • 运行验收:Actions 页面能看到 Waiting、Review deployments,批准后 job 才进入发布步骤。
  • 边界意识:等待计时器、分支限制和自定义保护规则是不同机制,不能用其中一个的表现推断另一个已经生效。

如果你的目标只是把生产密钥集中管理,环境也可以承担配置组织和访问控制;如果目标是“每次生产发布必须有人点确认”,则至少要同时完成 Required reviewers 设置和部署 job 的环境绑定。

相关问题

Required reviewers 是给整个 workflow 加审批吗?

不是。它作用于引用该环境的 job。把环境绑定到生产部署 job,通常比把所有检查都放进一个受保护 job 更容易看清审批发生在哪个阶段。

一个审查者团队需要所有人都批准吗?

审批配置的重点是列出允许审查的用户或团队;实际采用哪种团队内部批准规则,还要结合组织权限和发布制度。文章中的界面示意只表示配置入口,不替团队制定内部流程。

为什么批准后环境 secrets 才能使用?

这是环境保护的安全边界。关联 job 在规则通过前不能访问该环境的 secrets,避免未经人工确认的工作流先拿到生产凭据。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
VS Code Remote Tunnels 怎样让隧道在后台持续运行VS Code Remote Tunnels 怎样让隧道在后台持续运行
上一篇
VS Code Remote Tunnels 怎样让隧道在后台持续运行
GitHub Actions schedule 怎样按时区安排定时工作流
下一篇
GitHub Actions schedule 怎样按时区安排定时工作流
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    879次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    876次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    959次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    941次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    768次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码