目前,我们的开发人员通过手动触发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-cli
的script:
创建一个作业。
您也可以通过其他方式控制您的工作,比如使用when: manual
,这样只有通过对主分支的管道进行有意的操作才能创建发布。
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
when: manual