Deploy Tokens

原文:https://docs.gitlab.com/ee/user/project/deploy_tokens/

Deploy Tokens

版本历史

部署令牌使您无需用户和密码即可下载( git clone )或推和拉项目的程序包和容器注册表映像.

部署令牌只能由维护者管理.

如果有密钥对,则可能要改用部署密钥 .

Creating a Deploy Token

您可以从项目的设置中创建任意数量的部署令牌. 或者,您也可以创建组范围的部署令牌 .

  1. 登录到您的 GitLab 帐户.
  2. 转到要为其创建”部署令牌”的项目(或组).
  3. 设置 > 存储库 .
  4. 单击” 部署令牌”部分上的”扩展”.
  5. 选择令牌的名称,有效期(可选)和用户名(可选).
  6. 选择所需的范围 .
  7. 单击创建部署令牌 .
  8. 将部署令牌保存在安全的地方. 离开或刷新页面后, 您将无法再次访问它 .

Personal access tokens page

Deploy token expiration

部署令牌在您定义的日期 UTC 午夜到期.

Revoking a deploy token

您可以随时单击”活动的部署令牌”区域下的相应” 撤消”按钮来撤消任何部署令牌.

Limiting scopes of a deploy token

可以使用不同的作用域创建部署令牌,这些作用域允许给定令牌可以执行各种操作. 下表介绍了可用的范围以及引入的 GitLab 版本.

Scope Description 在 GitLab 版本中引入
read_repository 允许通过git clone对存储库进行读取访问 10.7
read_registry 如果项目是私有的并且需要授权,则允许对容器注册表图像的读取访问. 10.7
write_registry Allows write-access (push) to container registry. 12.10
read_package_registry 允许对包注册表进行读取访问. 13.0
write_package_registry 允许对程序包注册表的写访问. 13.0

Deploy token custom username

在 GitLab 12.1 中引入 .

默认的用户名格式为gitlab+deploy-token-#{n} . 某些工具或平台可能不支持此格式,在这种情况下,您可以指定在创建部署令牌时要使用的自定义用户名.

Usage

Git clone a repository

要使用部署令牌下载存储库,您只需要:

  1. 创建一个以read_repository为范围的部署令牌.
  2. 记下您的usernametoken .
  3. git clone使用 Deploy Token git clone项目:

    1. git clone https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git

<username><deploy_token>替换为正确的值.

Read Container Registry images

要读取容器注册表图像,您需要:

  1. 使用read_registry作为范围创建部署令牌.
  2. 记下您的usernametoken .
  3. 使用部署令牌登录到 GitLab 的 Container Registry:
  1. docker login -u <username> -p <deploy_token> registry.example.com

只需将<username><deploy_token>替换为适当的值即可. 然后,您可以简单地从 Container Registry 中提取图像.

Push Container Registry images

在 GitLab 12.10 中引入 .

要推送容器注册表映像,您需要:

  1. 创建一个具有write_registry作为范围的部署令牌.
  2. 记下您的usernametoken .
  3. 使用部署令牌登录到 GitLab 的 Container Registry:

    1. docker login -u <username> -p <deploy_token> registry.example.com

只需将<username><deploy_token>替换为适当的值即可. 然后,您可以简单地将图像推送到 Container Registry.

Read or pull packages

在 GitLab 13.0 中引入 .

要在 GitLab 软件包注册表中提取软件包,您需要:

  1. 使用read_package_registry作为范围创建一个部署令牌.
  2. 记下您的usernametoken .
  3. 对于您选择软件包类型,请遵循有关部署令牌的身份验证说明.

Push or upload packages

在 GitLab 13.0 中引入 .

要在 GitLab 软件包注册表中上传软件包,您需要:

  1. 使用write_package_registry作为范围创建部署令牌.
  2. 记下您的usernametoken .
  3. 对于您选择软件包类型,请遵循有关部署令牌的身份验证说明.

Group Deploy Token

在 GitLab 12.9 中引入 .

在组级别创建的部署令牌可在属于特定组或其子组之一的所有项目中使用.

有关概述,请参阅” 组部署令牌” .

要使用组部署令牌:

  1. 为组创建一个部署令牌.
  2. 克隆存储库时使用项目部署令牌的方式相同.

克隆相关项目的存储库时,应用于组部署令牌的范围(例如read_repository )将一致地应用.

GitLab Deploy Token

在 GitLab 10.8 中引入 .

部署令牌是一种特殊情况. 如果用户创建了一个名为gitlab-deploy-token的名称,则 Deploy Token 的用户名和令牌将自动作为环境变量暴露给 CI / CD 作业: CI_DEPLOY_USERCI_DEPLOY_PASSWORD .

创建令牌后,可以使用以下变量登录到 Container Registry:

  1. docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY

注意:目前尚未为组部署令牌实现gitlab-deploy-token部署令牌的特殊处理. 为了使部署令牌可用于 CI / CD 作业,必须在项目级别创建它. 有关详细信息,请参见此问题 .