GitLab现在具有称为“ Releases”的好功能。您可以将“发布”定义为“标签+一些描述+一些URL”的组合,它会显示在项目的“发布”和“标签”页面上。 GitLab doc说:
我们建议您将此操作作为CI / CD发行流程中的最后一步之一
但是,等等!默认情况下,CI / CD作业无法访问API调用或写入git存储库。我们可以配置“部署令牌”或“部署密钥”以访问存储库,并在构建脚本中使用它们(通过“秘密变量”)。但是“部署令牌”和“部署密钥”都无法访问API。
因此,我们无法使用其环境变量从CI / CD作业创建发布,我们无法使用部署令牌,我们无法使用部署密钥。因此,当GitLab说“我们建议将其作为CI / CD发行流程中的最后步骤之一”时,建议我们做什么?
答案 0 :(得分:2)
此previous question突出显示了相同的问题,指出您需要在CI / CD发布管道中访问(from doc)
- 两个OAuth2令牌
- 个人访问令牌
- 会话cookie
这是not limited to release。
如gitlab-ce issue 61108所示:“允许使用CI_JOB_TOKEN
管理标签”
但是,事实证明,仅使用
CI_JOB_TOKEN
无法删除标签。
相反,我需要创建访问令牌并将其作为CI变量传递,以便能够从CI作业中调用此API。
其他示例:
但是,事实证明,此REST API的调用不适用于
JOB_TOKEN
标头,而仅适用于PRIVATE_TOKEN
。
是否有此限制?我不想仅为了操纵发行版资产而维护额外的私有令牌。
这意味着目前(2019年6月),维护一个额外的Private令牌并将其作为CI变量传递可能是唯一可用的解决方法,以待解决这些问题。
我认为,这将使用masked variable(GitLab 11.0 +)