通过审批门部署到生产环境
学习如何使用 GitHub Actions 环境保护规则、手动审批和部署门,将构建安全地从预发布环境提升到生产环境
通过审批门部署到生产环境 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
为什么生产环境需要关卡
持续部署会自动发布代码,但在没有任何检查点的情况下直接推送到生产环境存在风险。糟糕的版本可能会立即影响每位用户。
审批关卡是一次有意设置的暂停,由人员或自动检查确认部署是否应继续。
- 降低错误的影响范围
- 创建记录谁批准了什么的审计轨迹
- 让您区分
staging与production的信心级别
GitHub 环境
GitHub Actions 有一项名为环境的功能。环境(例如 production)可以拥有自己的机密信息、变量和保护规则。
您可以使用 environment 键从作业中引用环境。这是添加审批关卡的基础。
jobs:
deploy:
runs-on: ubuntu-latest
environment: production
steps:
- run: echo 'Deploying to production'必需的审核者
在仓库设置的 设置 > 环境 > 生产环境 下,您可以启用必需的审核者。
当作业以该环境为目标时,工作流运行会暂停并等待列出的某位审核者点击 Approve。
- 最多可以配置 6 名审核者
- 默认情况下,任何一名审核者的批准都会解除作业阻塞
- 根据设置,批准者不能是触发运行的人员
完整的审批工作流
这里会先运行 build 作业,然后 deploy 作业通过 needs 依赖于它,并以受保护的 production 环境为目标。
在必需的审核者批准之前,部署不会启动。
name: Deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo 'build artifact'
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: production
url: https://myapp.example.com
steps:
- run: echo 'deploy to prod'等待计时器
除了审核者之外,环境还支持等待计时器。它会强制部署延迟一段时间(最长 30 天)后才能继续。
较短的等待计时器可用作安全冷却期:它为团队提供了在运行到达生产环境前取消运行的时间窗口。
部署分支限制
环境可以限制允许进行部署的分支。对于 production,通常只允许 main(或发布标签)。
这样可以防止从功能分支意外部署到生产环境。
- 受保护的分支——只有具有保护规则的分支
- 选定的分支——明确的允许列表或标签模式
按环境限定的机密信息
每个环境都有自己的机密信息。production 环境可以保存 PROD_DB_URL,而 staging 环境保存 STAGING_DB_URL。
环境中定义的机密信息仅可供以该环境为目标的作业使用,从而增加了另一层隔离。
steps:
- name: Deploy
env:
DB_URL: ${{ secrets.PROD_DB_URL }}
run: ./deploy.sh跟踪部署状态
在环境上设置 url 会在 GitHub 用户界面中的部署旁添加可点击的链接,并通过 Deployments API 记录一个部署对象。
这样您就能看到清晰的历史记录:哪个提交被部署到生产环境、部署时间以及执行者。
environment:
name: production
url: https://myapp.example.com批准待处理的运行
当带关卡的作业正在等待时,您会在工作流运行页面看到黄色的Review deployments横幅。
- 在操作选项卡中打开运行
- 点击
Review deployments - 选择环境,然后点击
Approve and deploy或Reject
您还可以留下评论来说明决定。
组合多个关卡
最强的生产环境关卡会组合多项规则:
- 必需的审核者(人工批准)
- 等待计时器(冷却期)
- 分支限制(仅限
main) - 环境机密信息(隔离)
将这些规则分层组合起来,可以建立从预发布环境到生产环境的稳健发布流程。
安全地绕过关卡
有时您需要处理紧急热修复。与其移除保护规则,不如考虑使用单独且范围严格限定的热修复工作流,并为其设置独立的日志记录和更严格的审核者要求。
绝不要为了方便而永久禁用关卡——那会违背安全机制的目的。
快速检查
检验您对生产环境审批关卡的理解。
回顾
您已经学会如何使用 GitHub 环境为生产部署添加审批关卡。
- 使用
environment键指定受保护的环境 - 必需的审核者会添加人工批准
- 等待计时器会添加冷却时间窗口
- 分支限制和环境机密信息会增加隔离
这些关卡结合起来,可以让从预发布环境到生产环境的发布过程安全且可审计。
用 AI 导师学习 DevOps Bootcamp — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 142
- 课程
- 568
常见问题解答
「通过审批门部署到生产环境」课时是免费的吗?
是的 — 「通过审批门部署到生产环境」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「通过审批门部署到生产环境」这节课中我会学到什么?
学习如何使用 GitHub Actions 环境保护规则、手动审批和部署门,将构建安全地从预发布环境提升到生产环境 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「通过审批门部署到生产环境」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。