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_stop | MR 关闭时关联的停止作业 |
| when: manual | 手动作业,作为发布门 |
环境页面把「部署了什么」可视化:事故复盘时是直接的证据来源,回滚决策也基于它。
动态环境要配停止策略:review/* 之类按分支生成的环境数量会持续增长,用停止作业或自动停止兜底。