从 Gitlab CI 中的主分支创建"release"



目前,我们的开发人员通过手动触发main分支并通过Maven构建发布版本的过程来创建Java工件的发布版本。

我想知道我应该如何在GitLab CI中实现这一点。在GitHub Actions中,我可以写一个";释放";工作流程文件,然后通过Actions选项卡手动运行它。

在GitLab CI中,我发现可以手动运行作业,但作业只是管道的一部分。此外,您可以手动启动管道运行,但这将触发标准管道(SNAPSHOT构建等(;RELEASE=true";对于每个发布版本,构建似乎都很麻烦。

有什么简单的方法可以解决这个问题吗?

GitLab的release-cli就是为这个用例设计的。在使用cicd作业创建发布中对此进行了说明。release:键可用于轻松配置作业,以调用带有相应选项的releasecli。

使用标记创建发布是一种常见的做法——这样,只有在故意推送标记时,才会运行发布作业。您可以使用类似rules:- if: $CI_COMMIT_TAG的内容。

release_job:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_TAG                  # Run this job when a tag is created manually
script:
- echo "running release_job"
release:
name: 'Release $CI_COMMIT_TAG'
description: 'Created using the release-cli $EXTRA_DESCRIPTION'  # $EXTRA_DESCRIPTION must be defined
tag_name: '$CI_COMMIT_TAG'                                       # elsewhere in the pipeline.
ref: '$CI_COMMIT_TAG'
milestones:
- 'm1'
- 'm2'
- 'm3'
released_at: '2020-07-15T08:00:00Z'  # Optional, is auto generated if not defined, or can use a variable.
assets: # Optional, multiple asset links
links:
- name: 'asset1'
url: 'https://example.com/assets/1'
- name: 'asset2'
url: 'https://example.com/assets/2'
filepath: '/pretty/url/1' # optional
link_type: 'other' # optional

当然,您也可以使用调用release-cliscript:创建一个作业。

您也可以通过其他方式控制您的工作,比如使用when: manual,这样只有通过对主分支的管道进行有意的操作才能创建发布。

rules:
- if: '$CI_COMMIT_BRANCH == "main"'
when: manual