使用部署令牌下载

时间:2020-10-30 01:47:19

标签: continuous-integration gitlab-ci

我在GitLab中有一个带有CI管道的项目(A)。该管道依赖于另一个项目(B)中的程序包。在构建项目A的过程中,我想从项目B的程序包注册表中下载程序包。软件包以{zip文件} generic packages的形式上传。这些项目都是私有的,因此我需要某种访问令牌进行身份验证。

我正在尝试使用Deploy Tokens,因为它们似乎提供了必需的read_package_registry访问范围。但是,我找不到任何描述如何在下载通用软件包文件时使用部署令牌进行身份验证的文档。

我正在使用上一个链接中所述的以下请求。

GET https://gitlab.com/api/v4/projects/<project_B_id>/packages/generic/<package_name>/<package_version>/<package_file>

我尝试过

  • 将部署令牌用户名和密码添加到URL(基本/摘要身份验证)
  • 为请求PRIVATE-TOKEN: [deploy-token]添加标头
  • 为请求DEPLOY-TOKEN: [deploy-token]添加标头
  • 为请求Authorization: Bearer [deploy-token]添加标头
  • 我也尝试了上述每个标头,但使用[deploy-token-username][deploy-token]作为值

我找不到说明不能使用部署令牌的文档。

有没有人有一个可行的示例,或者有没有人知道这是否可行?

我可以切换到私有访问令牌,但是我更愿意为该工作使用正确的工具,而这似乎是部署令牌。

2 个答案:

答案 0 :(得分:0)

我也在寻找这个答案。

文档(https://docs.gitlab.com/ee/user/packages/generic_packages/index.html#authenticate-to-the-package-registry)说

要向Package Registry进行身份验证,您需要个人访问令牌或CI作业令牌。

未提及部署令牌。这些似乎仅限于docker,npm等。

此外,您在项目B中拥有的工作令牌使您可以发布工件。但是,您在项目A中拥有的工作令牌似乎无权下载。

我相信答案是您不能使用Deploy Token,但我希望证明自己是错误的。

答案 1 :(得分:0)

此问题已在gitlab上提出。部署令牌暂时不起作用。目前在这里进行跟踪:

https://gitlab.com/gitlab-org/gitlab/-/issues/284397

解决方法是使用个人访问令牌。