环境保护规则是什么
GitHub Actions 的环境(jobs.<id>.environment):把部署作业绑定到命名环境,可配置必需评审人、等待计时与分支限制;环境级 secrets 只对声明该环境的作业可见。部署记录按环境留存,谁在何时部署了哪个版本可直接追溯。它是生产门禁的最小可用形态,规则与密钥都在环境设置里维护。
基本信息
| 写法 | jobs.<id>.environment(可带 name 与 url) |
|---|---|
| 保护规则 | 必需评审人、等待计时、分支限制 |
| 密钥 | 环境级 secrets 与 vars,仅对应环境的作业可用 |
| 记录 | 部署记录按环境留存,可追溯版本与触发人 |
| 前提 | 环境需先在仓库设置中创建并配置规则 |
典型使用场景
- 生产审批门:部署前需指定评审人放行
- 等待计时:冷却窗口内不允许连续部署
- 分支限制:只允许指定分支触发生产部署
- 密钥隔离:生产密钥仅生产环境作业可用
- 部署追溯:发布记录从环境的部署列表直接看
- 预发到生产:两个环境的密钥与规则分开维护
部署到环境
部署到环境
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: production # 绑定环境,触发其保护规则
url: https://app.example.com # 部署记录里可点击的入口
steps:
- run: ./deploy.sh
# 规则与密钥在环境的设置里维护,不写在 workflow 里保护规则读法
| 规则 | 作用 | 注意 |
|---|---|---|
| 必需评审人 | 作业执行前需人工批准 | 审批人不足时作业一直等待 |
| 等待计时 | 批准后需再等待设定时长 | 用于冷却与观察窗口 |
| 分支限制 | 仅指定分支可部署到该环境 | 临时分支部署会被拦 |
| 环境密钥 | 仅该环境作业可读取 | 范围不同于仓库级密钥 |
| 部署记录 | 按环境留存历史 | 审计与回滚定位的依据 |
审批在作业开始前阻塞:需要审批的部署单独成 job,避免与其他步骤混排。
环境名拼写要精确:规则绑定在环境名上,拼错等于部署走了无规则路径。
云上发布可结合 OIDC 换取短期凭据:长期密钥留在仓库外,环境级策略按需缩小范围。