部署批准

引入于 14.7 版本,功能标志名为 deployment_approvals。默认禁用。 功能标志移除于 14.8 版本。

caution此功能处于 Alpha 阶段,如有更改,恕不另行通知。

在部署到某些受保护的环境(例如,生产环境)之前要求额外的批准可能很有用。部署前批准要求对于适应每次部署之前必须进行的测试、安全性或合规性流程很有用。

当受保护的环境需要一个或多个批准时,该环境的所有部署都会被阻止,并在运行前等待所需的批准。

要求

为项目配置部署批准

为项目配置部署批准:

  1. 创建部署作业
  2. 需要为受保护环境批准

创建部署作业

在所需项目的 .gitlab-ci.yaml 文件中创建部署作业。这个作业不需要手动(when:manual)。

示例:

   stages:
     - deploy

   production:
     stage: deploy
     script:
       - 'echo "Deploying to ${CI_ENVIRONMENT_NAME}"'
     environment:
       name: ${CI_JOB_NAME}

需要为受保护环境批准

note目前,不可能要求对现有的受保护环境进行批准。解决方法是在重新保护环境时,取消保护环境并配置批准。

有两种方法可以为受保护的环境配置批准:

  1. 使用 UI
    1. 所需核准 字段设置为 1 个或更多。
  2. 使用 REST API
    1. 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"
note要保护、更新或取消保护环境,您必须至少具有维护者角色。

批准或拒绝部署

note目前,只有基于 API 的配置可用。计划在不久的将来进行基于 UI 的配置。

被阻止的部署在收到所需数量的批准后立即排队。一次拒绝会导致部署失败。部署的创建者不能批准它,即使他们有权部署。

使用 Deployments API,被允许部署到受保护环境的用户可以批准或拒绝被阻止的部署。

示例:

curl --data "status=approved" \
     --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/deployments/1/approval"

如何查看被阻止的部署

使用 UI

  1. 在顶部栏上,选择 菜单 > 项目 并找到您的项目。
  2. 在左侧边栏上,选择 部署 > 环境
  3. 选择要部署到的环境。
  4. 寻找 blocked 标签。

使用 API

使用部署 API 查看部署。status 字段指示部署是否被阻止。

  • status 字段指示部署是否被阻止。
  • pending_approval_count 字段表示还有多少批准可以运行部署。
  • approvals 字段包含部署的批准。