極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有:
- 極狐GitLab 中文文檔
- 極狐GitLab 中文論壇
- 極狐GitLab 官網
部署令牌 (BASIC ALL)
您可以使用部署令牌來啟用部署任務的身份驗證,而與用戶賬戶無關。在大多數情況下,您使用來自外部主機的部署令牌,例如構建服務器或 CI/CD 服務器。
使用部署令牌,自動化任務可以:
- 克隆 Git 倉庫。
- 從極狐GitLab 容器鏡像庫中提取和推送。
- 從極狐GitLab 軟件包庫中提取和推送。
部署令牌是一對值:
-
用戶名:HTTP身份驗證框架中的
username
。默認用戶名格式為gitlab+deploy-token-{n}
。您可以在創建部署令牌時指定自定義用戶名。 -
令牌:HTTP 身份驗證框架中的
password
。
您可以將部署令牌對以下端點進行 HTTP 身份驗證:
-
極狐GitLab 軟件包庫公共 API。
-
Git 命令。
您可以在項目或群組級別創建部署令牌:
-
項目部署令牌:權限僅適用于項目。
-
組部署令牌:權限適用于群組中的所有項目。
默認情況下,部署令牌不會過期。您可以選擇在創建時設置到期日期。到期發生在該日期的 UTC 午夜。
WARNING:
如果啟用了外部授權,則不能將新的或現有的部署令牌用于 Git 操作和軟件包庫操作。
范圍
部署令牌的范圍決定了它可以執行的操作。
范圍 | 描述 |
---|---|
read_repository | 使用 git clone 對倉庫進行只讀訪問。 |
read_registry | 對項目容器鏡像庫中鏡像的只讀訪問權限。 |
write_registry | 對項目容器鏡像庫中鏡像的寫入訪問(推送)權限。 |
read_package_registry | 對項目的軟件包庫的只讀訪問權限。 |
write_package_registry | 對項目的軟件包庫的寫入權限。 |
極狐GitLab 部署令牌
- 在群組級別對
gitlab-deploy-token
的支持引入于 15.1 版本,功能標志為ci_variable_for_group_gitlab_deploy_token
。默認啟用。 - 功能標志
ci_variable_for_group_gitlab_deploy_token
刪除于 15.4 版本。
極狐GitLab 部署令牌是一種特殊類型的部署令牌。如果您創建一個名為 gitlab-deploy-token
的部署令牌,部署令牌會自動作為變量公開給 CI/CD 作業,以便在 CI/CD 流水線中使用:
-
CI_DEPLOY_USER
:用戶名 -
CI_DEPLOY_PASSWORD
:令牌
例如,要使用極狐GitLab 令牌登錄到極狐GitLab 容器鏡像庫:
docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
NOTE:
在 15.0 及更早版本中,gitlab-deploy-token
部署令牌的特殊處理不適用于群組部署令牌。要使群組部署令牌可用于 CI/CD 作業,請將 設置 > CI/CD > 變量 中的 CI_DEPLOY_USER
和 CI_DEPLOY_PASSWORD CI/CD
變量設置為群組部署令牌的名稱和令牌。
極狐GitLab 公共 API
部署令牌不能與極狐GitLab 公共 API 一起使用。但是,您可以將部署令牌與某些端點一起使用,例如來自軟件包庫的端點。有關詳細信息,請參閱軟件包庫身份驗證。
創建部署令牌
創建部署令牌以自動執行可獨立于用戶賬戶運行的部署任務。
先決條件:
- 您必須至少具有項目或群組的維護者角色。
1.在左側邊欄中,選擇 搜索或轉到,然后:
- 對于項目部署令牌,選擇您的項目。
- 對于群組部署令牌,選擇您的群組。
2.在左側邊欄中,選擇 設置 > 倉庫。
3.展開 部署令牌。
4.填寫字段,然后選擇所需的范圍。
5.選擇 創建部署令牌。
記錄部署令牌的值。離開或刷新頁面后,無法再次訪問。
撤銷部署令牌
不再需要令牌時將其撤消。
先決條件:
- 您必須至少具有項目或群組的維護者角色。
要撤銷部署令牌:
1.在左側邊欄中,選擇 搜索或轉到,然后:
- 對于項目部署令牌,選擇您的項目。
- 對于組部署令牌,選擇您的群組。
2.在左側邊欄中,選擇 設置 > 倉庫。
3.展開 部署令牌。
4.在 可用部署令牌 部分,通過您要撤銷的令牌,選擇 撤銷。
克隆倉庫
您可以使用部署令牌來克隆倉庫。
先決條件:
- 具有
read_repository
范圍的部署令牌。
使用部署令牌克隆倉庫的示例:
git clone https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git
從容器鏡像庫中拉取鏡像
您可以使用部署令牌從容器鏡像庫中提取鏡像。
先決條件:
具有 read_registry
范圍的部署令牌。
使用部署令牌從容器鏡像庫中提取鏡像的示例:
docker login -u <username> -p <deploy_token> registry.example.com
docker pull $CONTAINER_TEST_IMAGE
將鏡像推送到容器鏡像庫
您可以使用部署令牌將鏡像推送到容器鏡像庫。
先決條件:
- 具有
write_registry
范圍的部署令牌。
使用部署令牌將鏡像推送到容器鏡像庫的示例:
docker login -u <username> -p <deploy_token> registry.example.com
docker push $CONTAINER_TEST_IMAGE
從軟件包庫中拉取軟件包
您可以使用部署令牌從軟件包庫中拉取包。
先決條件:
- 具有
read_package_registry
范圍的部署令牌。
對于您選擇的包類型,請按照部署令牌的身份驗證說明進行操作。
從極狐GitLab 庫安裝 NuGet 包的示例:
nuget source Add -Name GitLab -Source "https://gitlab.example.com/api/v4/projects/10/packages/nuget/index.json" -UserName <username> -Password <deploy_token>
nuget install mypkg.nupkg
推送軟件包到軟件包庫
您可以使用部署令牌將包推送到極狐GitLab 軟件包庫。
先決條件:
- 具有
write_package_registry
范圍的部署令牌。
對于您選擇的包類型,請按照部署令牌的身份驗證說明進行操作。
將 NuGet 包發布到軟件包庫的示例:
nuget source Add -Name GitLab -Source "https://gitlab.example.com/api/v4/projects/10/packages/nuget/index.json" -UserName <username> -Password <deploy_token>
nuget push mypkg.nupkg -Source GitLab
從依賴代理中拉取鏡像
- 引入于 14.2 版本。
您可以使用部署令牌從依賴代理中拉取鏡像。
先決條件:
- 具有
read_registry
和write_registry
范圍的部署令牌。
遵循依賴代理認證說明。