api - 从 GitLab 运行程序/管道中创建版本

标签 api continuous-integration gitlab pipeline

随着 2019 年 1 月 Gitlab 11.7 的发布,我们获得了新的关键特性 Publish releases for your projects .我想要准确显示该页面上的屏幕截图,并且我希望能够使用 releases API 下载已编译的二进制文件.

我可以手动完成。当然,手动方法的说明可以找到here on stack overflow .我需要帮助的问题是将其作为 CI/CD 管道的一部分进行处理,而人们可以轻松找到的答案并未涵盖该问题。

发行说明包含 a link to the documentation ,其中指出:

we recommend doing this as one of the last steps in your CI/CD release pipeline.



由此我认为这是可能的。然而,我能想象的唯一方法是像我一样使用 GitLab API,当我手动创建版本时。根据 the fine manual,当一个人想要访问 GitLab API 时,基本上有三种身份验证选项。 :OAUTH2 token 、个人访问 token 和 session cookie。因此,我需要一种方法来在我的 CI/CD 管道中使用其中任何一个,并具有足够的特权。这个问题的解决方案是一个持续的讨论,有很多贡献,但近年来几乎没有实质性进展。

那么,作为 CI/CD 发布管道的最后一步之一,如何创建发布?

出于显而易见的原因,将带有 API 访问权限的个人访问 key 存储在 CI/CD 变量甚至存储库中的文件中都不是一种选择。

最佳答案

他们发表了一篇博客文章,解释了如何做到这一点:
https://about.gitlab.com/blog/2020/05/07/how-gitlab-automates-releases/
他们创建了一个工具 (gitlab-releaser) 来帮助完成这项任务。基本上,您创建一个新步骤,在其中使用提供此工具的 docker 镜像,然后使用适当的参数调用该工具。

release_upload:
  image: registry.gitlab.com/gitlab-org/release-cli:v0.1.0
  script:
    - gitlab-releaser create --name="My Release" --description="My Release description"

关于api - 从 GitLab 运行程序/管道中创建版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56066649/

相关文章:

api - 短信支付解决方案

python - 是否可以通过 API 检索 Facebook 照片的替代文本?

unit-testing - TFS 2015 与 x64 单元测试

gradle - gradle项目子模块中的端到端测试

testing - 在持续集成中运行的测试中应该如何设置功能切换?

azure - 是否可以为 Azure Snowflake DB 创建 GitLab CICD 管道?

php - 使用curl发生API错误时如何读取响应体?

postgresql - 运行 gitlab-ctl reconfigure 时为 "initdb: encoding mismatch"

ruby - gitlab 通过 api 创建新用户会产生 404

api - postman 为 POST 请求解析 "Invalid CORS request"