如何使用 GitLab Releases API?

Ezh*_*Ezh 5 gitlab

GitLab 现在有一个很好的功能叫做“发布”。您可以将“发布”定义为“标签+一些描述+一些URL”的组合,它将显示在您项目的“发布”和“标签”页面上。GitLab 文档说:

我们建议将此作为 CI/CD 发布管道中的最后一步之一

可是等等!默认情况下,CI/CD 作业无法访问 API 调用或写入 git 存储库。我们可以配置“部署令牌”或“部署密钥”以访问存储库并在构建脚本中使用它们(通过“秘密变量”)。但是“部署令牌”和“部署密钥”都不允许访问 API。

所以,我们不能使用环境变量从 CI/CD 作业创建发布,我们不能使用部署令牌,我们不能使用部署密钥。那么,当 GitLab 说:“我们建议将此作为 CI/CD 发布管道中的最后一步之一”时,它究竟建议我们做什么?

Von*_*onC 5

这个前面的问题强调了同样的问题,指出你需要在你的CI / CD发行管道访问(从DOC)

  • OAuth2 令牌
  • 个人访问令牌
  • 会话cookie

这不仅限于 release。
如gitlab-ce 问题 61108 所示:“允许使用标签管理CI_JOB_TOKEN”

然而,事实证明,不能通过简单地使用CI_JOB_TOKEN.
相反,我需要创建一个访问令牌并将其作为 CI 变量传递,以便能够从 CI 作业中调用此 API。

其他例子:

但是,事实证明对这个 REST API 的调用不适用于JOB_TOKEN标头,而只能用于PRIVATE_TOKEN.
这个限制是有意的吗?

我不想为了操纵发行版的资产而维护额外的私人代币。

这意味着目前(2019 年 6 月),维护一个额外的 Private 令牌并将其作为 CI 变量传递可能是唯一可用的解决方法,等待这些问题得到解决。
我想这会使用一个掩码变量(GitLab 11.0+)