如何使用GitLab发布API?

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

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

但是,等等!默认情况下,CI/CD作业无法访问API调用或写入git存储库。我们可以配置“部署令牌”或“部署密钥”以访问存储库,并在构建脚本中使用它们(通过“秘密变量”)。但是,“部署令牌”和“部署密钥”都无法访问API。
因此,我们无法使用其环境变量从CI/CD作业创建发布,也无法使用部署令牌或部署密钥。那么,当GitLab说:“我们建议将此作为CI/CD发布流水线中的最后一步之一”时,它到底建议我们做什么?
2个回答

5

这个之前的问题也提到了同样的问题,指出在CI/CD发布流程中需要访问 (来自文档)

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

这不仅限于发布,如所示,在gitlab-ce issue 61108中看到: "允许使用 CI_JOB_TOKEN 管理标签"

然而,事实证明不能简单地使用 CI_JOB_TOKEN 删除标签。相反,我需要创建一个访问令牌并将其作为CI变量传递才能从CI工作中调用此API。

其他例子:

然而,事实证明使用 JOB_TOKEN 标头不能调用此REST API,而只能使用 PRIVATE_TOKEN。这个限制是有意的吗?

我不想为操纵发布的资产而保留额外的私有令牌。

因此,目前(2019年6月),保留额外的私有令牌并将其作为CI变量传递可能是唯一可用的解决方法,等待这些问题得到解决。
我想这将使用掩码变量(GitLab 11.0+)。


因此,答案是“没有答案”(使用额外的私有标记是不好的解决方案,原因很多)。 - Ezh
@Ezh 是的,目前在CI / CD发布流水线中没有直接使用GitLab Releases API的方法。 - VonC

1

2019年,我曾发表评论:

目前还没有直接从CI/CD发布流程使用GitLab Releases API的方法。

更新于2022年:

请参见GitLab 15.5(2022年10月)

使用Release CLI更新发布

在这个里程碑中,我们增加了使用Release CLI更新发布的功能。您可以使用它来自动化发布,通过直接从.gitlab-ci.yml文件更新任何发布属性,并利用CI/CD流水线来实现。

请参见文档问题

所以现在是可能的。

此外(仍为GitLab 15.5(2022年10月))

从CI/CD管道变量中访问标签的发布说明

在过去的版本中,配置引用标签关联的发布或发布说明的管道并不容易。

现在,您可以使用两个预定义的环境变量$CI_COMMIT_TAG_MESSAGE$CI_RELEASE_DESCRIPTION来引用此信息。

请参阅文档问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接