剪切新版本时如何触发 GitLab CI/CD 管道?
Posted
技术标签:
【中文标题】剪切新版本时如何触发 GitLab CI/CD 管道?【英文标题】:How to trigger a GitLab CI/CD Pipeline when cutting a new Release? 【发布时间】:2021-08-15 04:52:46 【问题描述】:我正在将我的项目从 GitHub.com 迁移到自托管的 GitLab CE 实例。我之前设置了一个 GitHub Actions 管道,以便在从标签中删除新版本时发布应用程序。也就是说,当我去github.com/<organization>/<project>/tags
并编辑标签以发布版本时,以下*-workflow.yml
脚本sn-p 将触发我想要的操作:
on:
release:
types: [created]
GitLab CI/CD (.gitlab-ci.yml
) 上的等价物是什么?我搜索了整个the GitLab docs 以及 gitlab.reddit.com 和 Stack Overflow 等辅助网站,但找不到任何方法。需要明确的是,在 GitLab 中将标签转换为真实版本的步骤如下:
-
转到
<GitLab CE>/<group>/<project>/-/releases/new
“创建自”列表中的任何标签
填写详细信息
点击“创建发布”按钮
我希望 GitLab 在上述第 4 步后立即执行我的script
。
【问题讨论】:
【参考方案1】:我不确定 Gitlab 是否有类似的功能,或者至少我在文档中找不到任何内容。
一种解决方法是在创建标签后在 CI 管道中自动创建发布。因此,无论何时从特定分支创建标签,CI 管道都会创建一个发布。您还可以使用$CI_COMMIT_TAG
值控制Release
的创建。
release:
stage: release
script:
- echo "Create release when a tag is created"
rules:
- if: '$CI_COMMIT_TAG' # Any tag is created
- if: '$CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+\-release/' # A specific tag with 'vX.Y.Z-release' pattern is created
release:
name: 'My awesome release'
tag_name: '$CI_COMMIT_TAG'
有关使用 CI 管道创建新 Release
的更多信息,您可以从文档中阅读此页面:
Create release from GitLab CI
【讨论】:
感谢您的参与,Reza。这是一个很好的解决方法,在需要发布 每个 匹配标签的情况下非常理想。您的建议需要先发制人地知道哪个版本将用于生产(例如,包括-release
),而不是在一些更多的手动测试或利益相关者批准之后“提升”现有标签的能力,例如。我将不回答这个问题,因为理想情况下,我想在创建上述版本时触发构建。希望有另一种方式。 ?
是的,你是对的。但是,我认为如果您找不到任何其他解决方案,您仍然可以考虑使用经过良好测试并准备发布的特定发布标签。然后您可以使用此解决方案触发管道并创建一个新的Release
。
如果您没有找到任何其他解决方案,或者我的回答对您有帮助,请接受或点赞回答:) 这对我提高声誉有很大帮助。
嗨 Reza,我赞成你的回答,因为我知道你已经尽力了,我真诚地感谢你的回应。我暂时不回答它,以向其他人表明我仍在寻找 GitLab 上的正确功能(如果存在)。以上是关于剪切新版本时如何触发 GitLab CI/CD 管道?的主要内容,如果未能解决你的问题,请参考以下文章
CI/CD技术专题「Jenkins实战系列」如何通过Gitlab对接Jenkins构建提交自动触发部署构建体系指南(上部)
如何使用 gitlab-ci 作业推送到 gitlab 存储库?