Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create releases from within a GitLab runner/pipeline

With the release of Gitlab 11.7 in January 2019, we get the new key feature Publish releases for your projects. I want precisely what the screenshot on that page shows and I want to be able to download compiled binaries using the releases API.

I can do it manually. Of course, instructions for the manual approach can be found here on stack overflow. The problem I need help with is doing it as part of a CI/CD pipeline, which is not covered by the answers one can find easily.

The release notes contain a link to the documentation, which states:

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

From this I gather it's possible. However, the only approach I can imagine is using the GitLab API just as I do, when I create releases manually. When one wants to access the GitLab API one has essentially three options for authentication, according to the fine manual: OAUTH2 tokens, personal access tokens and session cookies. Consequently I would need a method for having either of these available in my CI/CD pipeline, with sufficient privileges. Solutions for this problem are an ongoing discussion with lots of contributions, but virtually no tangible progress in recent years.

So, how does one create releases as one of the last steps in one's CI/CD release pipeline?

Storing my personal access key with API access in a CI/CD variable or even a file in the repo is not an option for obvious reasons.

like image 517
user1129682 Avatar asked Nov 16 '22 09:11

user1129682


1 Answers

They've put up a blog post explaining how to do this:

https://about.gitlab.com/blog/2020/05/07/how-gitlab-automates-releases/

They've created a tool (gitlab-releaser) to help with this task. Basically you create a new step, where you use a docker image that provides this tool, and then call the tool with the proper parameters.

release_upload:
  image: registry.gitlab.com/gitlab-org/release-cli:v0.1.0
  script:
    - gitlab-releaser create --name="My Release" --description="My Release description"
like image 138
xabitrigo Avatar answered Nov 23 '22 23:11

xabitrigo