GitHub Actions 怎样为生产环境增加审批
如果生产部署不能直接执行,希望有人确认后再继续,GitHub Actions 的做法是把部署 job 绑定到一个配置了 Required reviewers 的 production environment。工作流运行到这个 job 时会先等待环境保护规则;审批通过后,job 才会被送到 runner 执行。
官方地址:https://github.com/
对应文档:https://docs.github.com/en/actions/concepts/workflows-and-actions/deployment-environments
- 审批规则配置在仓库的 environment 中,workflow 只负责在部署 job 上引用同名环境。
- 审批发生在 job 启动前;环境 secrets 也要等保护规则通过后才会提供给 job。
- 只创建 production 环境还不够,若 job 没有写
environment: production,它不会经过该环境的审批。
第1步:打开 production 环境配置入口
进入目标仓库,打开 Settings > Environments。选择已有的 production,如果还没有就创建一个同名环境。环境名称后面会原样写进 workflow,因此建议使用简单、稳定且不会频繁改名的 production。
进入环境详情后,先找到 Deployment protection rules 和 Deployment branches and tags 两块区域。前者决定部署是否需要额外条件,后者决定哪些分支可以进入这个环境。

第2步:添加必需审批人
在 Deployment protection rules 中启用 Required reviewers,添加负责生产发布的用户或团队。审批人不需要参与每一个提交,但必须具备能够审查并批准该仓库部署的权限。
如果要求发起部署的人不能自己批准,可以同时打开 Prevent self-review。这个选项适合把“提交代码”和“生产放行”分开,减少一个人从触发到上线的单人闭环。
保存后,production 环境会保留这条规则。注意,Required reviewers 是环境级设置,不是某个 pull request 的临时评论;以后所有引用该环境的 job 都会遵守它。
第3步:限制可部署分支
继续看 Deployment branches and tags。如果只有受保护的生产分支才能发布,可以选择 Protected branches;如果规则更细,可以使用自定义分支策略,只允许例如 main 或 release/** 进入 production。
分支策略和审批是两道不同的门:分支策略先限制“谁能尝试进入环境”,Required reviewers 再决定“这次尝试是否放行”。不要只配置审批而完全忽略触发分支,否则测试分支也可能不断产生生产审批请求。
第4步:让部署 job 引用 production 环境
打开仓库中的 workflow 文件,把生产部署步骤放进一个单独的 job,并在 job 层级加入 environment: production。下面是最小结构,注释说明每个关键位置:
name: deploy
on:
push:
branches: [main] # 只让生产分支触发这条部署工作流
jobs:
deploy-production:
runs-on: ubuntu-latest # 审批通过后才会申请这个 runner
environment:
name: production # 必须与仓库中的环境名称完全一致
url: https://example.com/ # 可选:在部署记录中显示生产地址
steps:
- uses: actions/checkout@v4 # 取出待发布的提交
- name: Deploy
run: ./scripts/deploy.sh # 只有环境规则通过后才执行生产命令
这里最容易写错的是缩进和层级:environment 要和 runs-on、steps 同属于 deploy-production,不能把它写成某个 step 的普通参数。url 是可选的,若不需要在部署记录中展示地址可以删除。
如果生产凭据存放在 environment secrets 中,job 也必须正确引用该 environment。GitHub 文档说明,环境保护规则通过前,job 不会访问该环境的 secrets。
第5步:审核并处理不生效情况
提交 workflow 后,打开仓库的 Actions,进入对应的工作流运行记录。当流程走到 deploy-production 时,应该看到类似 Review required 的等待状态。打开 Review deployments,选择 production,按需要填写说明,然后点击 Approve and deploy;不接受本次上线则选择拒绝。

如果没有出现审批,按下面顺序检查:
- 确认 job 写的是
environment: production,名称大小写和仓库环境完全一致。 - 确认 Required reviewers 保存于当前仓库的 production 环境,而不是另一个同名相似环境。
- 确认触发分支满足 Deployment branches and tags;规则不匹配时,问题不是审批按钮消失,而是环境分支策略先拒绝了部署。
- 确认查看工作流运行的人具备审批权限,并且没有把部署命令放在另一个未绑定环境的 job 中。
常见问题
只创建 production 环境,为什么没有审批?
环境本身不会自动产生审批。必须在环境中添加 Required reviewers,并在实际部署 job 上引用这个环境。
审批前能读取 production secrets 吗?
不能。正确的 job 会在环境保护规则通过后才获得该环境 secrets;不要把同一凭据复制到仓库级 secrets 来绕开这道门。
为什么审批后 job 仍然没有运行?
先看分支策略、并发设置和 runner 可用性。审批只表示环境规则已通过,不代表分支限制、队列或 runner 资源一定同时满足。
最终可以用四项结果判断配置是否完成:production 环境存在 Required reviewers,生产分支满足部署策略,部署 job 明确写有 environment: production,工作流运行页在执行生产步骤前出现 Review required。满足这些条件后,生产上线就从“提交即执行”变成“触发后等待明确放行”。
GitHub Actions 怎样用矩阵并行多个运行组合
- 上一篇
- GitHub Actions 怎样用矩阵并行多个运行组合
- 下一篇
- Docker Buildx 怎样构建多架构镜像
-
- 文章 · 软件教程 | 1小时前 | git · 软件教程 · 回归测试 退出码 git bisect git bisect run 版本定位
- Git bisect 怎样自动运行回归脚本
- 482浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- Docker Compose 怎样让服务等待健康检查
- 205浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- Git worktree 怎样并行处理多个分支
- 249浏览 收藏
-
- 文章 · 软件教程 | 1小时前 | gitHub actions · 软件教程 · 持续集成 · 持续集成 Matrix GitHub Actions strategy.matrix max-parallel
- GitHub Actions 怎样用矩阵并行多个运行组合
- 310浏览 收藏
-
- 文章 · 软件教程 | 1小时前 | vs code · 软件教程 · VS Code 开发环境 Settings Sync 扩展同步 ignoredExtensions
- VS Code Settings Sync 怎样排除某个扩展
- 258浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- VS Code 用户设置和工作区设置怎样排查覆盖关系
- 478浏览 收藏
-
- 文章 · 软件教程 | 1小时前 | 开发环境 · vs code · 软件教程 · shell VS Code 集成终端 Terminal Profiles Select Default Profile
- VS Code 怎样为终端选择默认 Shell Profile
- 388浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- VS Code 怎样为已有项目添加 Dev Container 配置
- 393浏览 收藏
-
- 文章 · 软件教程 | 1小时前 | vs code · 软件教程 · VS Code 团队协作 代码片段 project snippets code-snippets
- VS Code 怎样让项目级代码片段随仓库共享
- 219浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 474次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 533次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 552次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 506次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 324次使用
-
- Go 项目用 GitHub Actions 自托管 runner:版本强制执行前该怎么整理 CI
- 2026-07-09 340浏览
-
- VS Code Dev Containers 实战:用容器搭建一致开发环境
- 2026-06-12 182浏览
-
- Docker Compose 本地多服务环境实战:MySQL、Redis、Nginx 一键启动
- 2026-06-12 250浏览
-
- Git worktree 实战:一套仓库并行修 Bug 和开发新功能
- 2026-06-12 447浏览
-
- Nginx 本地 HTTPS 反向代理实战:前后端联调不再改端口
- 2026-06-12 373浏览
