部署批准
引入于 14.7 版本,功能标志名为
deployment_approvals
。默认禁用。 功能标志移除于 14.8 版本。
在部署到某些受保护的环境(例如,生产环境)之前要求额外的批准可能很有用。部署前批准要求对于适应每次部署之前必须进行的测试、安全性或合规性流程很有用。
当受保护的环境需要一个或多个批准时,该环境的所有部署都会被阻止,并在运行前等待所需的来自 Allowed to Deploy
列表的批准。
要求
- GitLab 环境和部署的基础知识。
- 受保护环境的基础知识。
为项目配置部署批准
为项目配置部署批准:
创建部署作业
在所需项目的 .gitlab-ci.yml
文件中创建部署作业。这个作业不需要手动(when:manual
)。
示例:
stages:
- deploy
production:
stage: deploy
script:
- 'echo "Deploying to ${CI_ENVIRONMENT_NAME}"'
environment:
name: ${CI_JOB_NAME}
需要为受保护环境批准
配置批准要求有两种方式:
多个批准规则是比统一批准设置更灵活的选项,因此两种配置不应共存,多个批准规则优先于统一审批设置。
统一批准设置
有两种方法可以为受保护的环境配置批准:
- 使用 UI
- 将 所需核准 字段设置为 1 个或更多。
- 使用 REST API
- 将
required_approval_count
字段设置为 1 或更多。
- 将
配置完成后,部署到此环境的所有作业都会自动进入阻止状态并等待批准才能运行。确保所需的批准数量少于允许部署的用户数量。
示例:
curl --header 'Content-Type: application/json' --request POST \
--data '{"name": "production", "deploy_access_levels": [{"group_id": 9899826}], "required_approval_count": 1}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/22034114/protected_environments"
要保护、更新或取消保护环境,您必须至少具有维护者角色。
多个批准规则
引入于 14.10 版本,带有名为
deployment_approval_rules
的功能标志。默认禁用。 一般可用于 15.0 版本。功能标志deployment_approval_rules
删除。
- 使用 REST API。
-
deploy_access_levels
表示哪个实体可以执行部署作业。 -
approval_rules
表示哪个实体可以批准部署作业。
-
配置完成后,部署到此环境的所有作业都会自动进入阻止状态并等待批准才能运行。确保所需的批准数量少于允许部署的用户数量。
示例:
curl --header 'Content-Type: application/json' --request POST \
--data '{"name": "production", "deploy_access_levels": [{"group_id": 138}], "approval_rules": [{"group_id": 134}, {"group_id": 135, "required_approvals": 2}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/groups/128/protected_environments"
使用此设置:
- 运维人员组(
group_id: 138
)有权执行部署作业到组织中的production
环境(group_id: 128
)。 - QA 测试人员组 (
group_id: 134
) 和安全组 (group_id: 135
) 有权批准将部署作业部署到组织中的production
环境 (group_id: 128
)。 - 除非已经收集到两个安全组的批准和一个 QA 测试组的批准,否则运维人员组无法执行部署作业。
要保护、更新或取消保护环境,您必须至少具有维护者角色。
批准或拒绝部署
引入于 14.9 版本
使用 GitLab UI 或 API,您可以:
- 批准部署使其继续进行。
- 拒绝部署来阻止它。
使用 UI 批准或拒绝部署
先决条件:
- 部署到受保护环境的权限。
要使用 UI 批准或拒绝部署到受保护环境:
- 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
- 在左侧边栏上,选择 部署 > 环境。
- 选择环境的名称。
- 在部署行中,选择 批准选项 ()。
- 可选。添加评论,说明您批准或拒绝部署的原因。
- 选择 批准 或 拒绝。
当配置了多个批准规则时,此功能可能无法正常工作。
使用 API 批准或拒绝部署
先决条件:
- 部署到受保护环境的权限。
要使用 API 批准或拒绝部署到受保护的环境,请传递所需的属性。
示例:
curl --data "status=approved&comment=Looks good to me" \
--header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/deployments/1/approval"
如何查看被阻止的部署
使用 UI
- 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
- 在左侧边栏上,选择 部署 > 环境。
- 选择要部署到的环境。
- 寻找
blocked
标签。
使用 API
使用部署 API 查看部署。status
字段指示部署是否被阻止。