首页/开发/CI/CD 与发布速查/GitLab Environments 与部署审批
环境与配置管理60 条

GitLab Environments 与部署审批

环境对象记录每次部署(谁、什么版本、何时):受保护环境限制可部署角色,部署作业可配手动手动门与变更记录。

CI/CD 与发布速查开发更新于 2026-10-13

GitLab Environments 是什么

GitLab Environments 是部署记录的载体:作业用 environment 字段声明自己部署到哪个环境,每次部署都记录「谁、什么版本、何时」,环境页面按时间聚合历史、可回溯任意一次部署。受保护环境(Protected environments)限定哪些用户或角色可以部署到该环境,把生产权限从「有管道权限即可」收口到指定人员。发布工作流里,它是审计与权限的结合点:环境页面回答「现在跑的是哪个版本」,部署记录回答「这个版本是怎么上去的」。

基本信息

记录Deployments 页面按环境聚合历史,可回溯版本
受保护环境限定哪些用户/角色可部署到该环境
关联作业 environment 字段决定归属与追踪
门控可叠加手动作业/审批,与受保护环境配合使用

典型使用场景

  • 发布记录与回溯:事故复盘时对照部署时间线与故障时间线。
  • 生产部署收口:受保护环境让只有指定角色能触发生产部署。
  • 回滚对象确认:环境页显示当前部署版本,回滚前先确认目标。
  • 预览环境管理:review/* 动态环境配合停止策略自动清理。
  • 合规审计:部署历史含操作者、版本、时间,直接作为审计证据。

部署作业示例

部署作业示例
deploy-prod:
  stage: deploy
  environment:
    name: production
    url: https://www.example.com
  when: manual
  script: ./ci/deploy.sh
# 受保护环境: Settings -> CI/CD -> Protected environments 限定角色

配置项读法

配置作用
environment: name部署归属与记录聚合键
environment: url环境页面展示的入口链接
on_stopMR 关闭时关联的停止作业
when: manual手动作业,作为发布门
环境页面把「部署了什么」可视化:事故复盘时是直接的证据来源,回滚决策也基于它。
动态环境要配停止策略:review/* 之类按分支生成的环境数量会持续增长,用停止作业或自动停止兜底。

易错点

  • 环境名动态生成(带 commit/流水线号):部署记录碎片化,统计与保护规则失效,命名分层设计。
  • 未启用受保护环境:任何有管道权限的人都能触发生产部署,先收口再谈审批流程。
  • 环境 URL 指向失效地址:复盘时找不到入口,部署时写入有效链接并随域名变化更新。
  • 手动作业无人提醒:审批请求淹没在通知流里,配置通知渠道与值班提醒。
  • 删除环境记录当作清理:历史部署记录是审计资产,删除前评估合规要求。

数据来源与参考

  • GitLab Docs《Environments》
  • GitLab Docs《Protected environments》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌