Deploy Tokens
- Creating a Deploy Token
- Deploy token expiration
- Revoking a deploy token
- Limiting scopes of a deploy token
- Deploy token custom username
- Usage
Deploy Tokens
版本历史
- 在 GitLab 10.7 中引入 .
- 从 GitLab 12.9 中的设置>存储库 移动 .
- 在 GitLab 12.10 中添加了
write_registry
范围 . - 从 GitLab 12.10.1.中的“设置”>” CI / CD” 移动 .
- 在 GitLab 13.0 中添加了软件包注册表范围 .
部署令牌使您无需用户和密码即可下载( git clone
)或推和拉项目的程序包和容器注册表映像.
部署令牌只能由维护者管理.
如果有密钥对,则可能要改用部署密钥 .
Creating a Deploy Token
您可以从项目的设置中创建任意数量的部署令牌. 或者,您也可以创建组范围的部署令牌 .
- 登录到您的 GitLab 帐户.
- 转到要为其创建”部署令牌”的项目(或组).
- 去 设置 > 存储库 .
- 单击” 部署令牌”部分上的”扩展”.
- 选择令牌的名称,有效期(可选)和用户名(可选).
- 选择所需的范围 .
- 单击创建部署令牌 .
- 将部署令牌保存在安全的地方. 离开或刷新页面后, 您将无法再次访问它 .
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
要使用部署令牌下载存储库,您只需要:
- 创建一个以
read_repository
为范围的部署令牌. - 记下您的
username
和token
. git clone
使用 Deploy Tokengit clone
项目:git clone https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git
将<username>
和<deploy_token>
替换为正确的值.
Read Container Registry images
要读取容器注册表图像,您需要:
- 使用
read_registry
作为范围创建部署令牌. - 记下您的
username
和token
. - 使用部署令牌登录到 GitLab 的 Container Registry:
docker login -u <username> -p <deploy_token> registry.example.com
只需将<username>
和<deploy_token>
替换为适当的值即可. 然后,您可以简单地从 Container Registry 中提取图像.
Push Container Registry images
在 GitLab 12.10 中引入 .
要推送容器注册表映像,您需要:
- 创建一个具有
write_registry
作为范围的部署令牌. - 记下您的
username
和token
. 使用部署令牌登录到 GitLab 的 Container Registry:
docker login -u <username> -p <deploy_token> registry.example.com
只需将<username>
和<deploy_token>
替换为适当的值即可. 然后,您可以简单地将图像推送到 Container Registry.
Read or pull packages
在 GitLab 13.0 中引入 .
要在 GitLab 软件包注册表中提取软件包,您需要:
Push or upload packages
在 GitLab 13.0 中引入 .
要在 GitLab 软件包注册表中上传软件包,您需要:
Group Deploy Token
在 GitLab 12.9 中引入 .
在组级别创建的部署令牌可在属于特定组或其子组之一的所有项目中使用.
有关概述,请参阅” 组部署令牌” .
要使用组部署令牌:
克隆相关项目的存储库时,应用于组部署令牌的范围(例如read_repository
)将一致地应用.
GitLab Deploy Token
在 GitLab 10.8 中引入 .
部署令牌是一种特殊情况. 如果用户创建了一个名为gitlab-deploy-token
的名称,则 Deploy Token 的用户名和令牌将自动作为环境变量暴露给 CI / CD 作业: CI_DEPLOY_USER
和CI_DEPLOY_PASSWORD
.
创建令牌后,可以使用以下变量登录到 Container Registry:
docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
注意:目前尚未为组部署令牌实现gitlab-deploy-token
部署令牌的特殊处理. 为了使部署令牌可用于 CI / CD 作业,必须在项目级别创建它. 有关详细信息,请参见此问题 .