【问题标题】:How to trigger a GitLab CI/CD Pipeline when cutting a new Release?剪切新版本时如何触发 GitLab CI/CD 管道?
【发布时间】: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 中将标签转换为真实版本的步骤如下:

  1. 转到<GitLab CE>/<group>/<project>/-/releases/new
  2. “创建自”列表中的任何标签
  3. 填写详细信息
  4. 点击“创建发布”按钮

我希望 GitLab 在上述第 4 步后立即执行我的script

【问题讨论】:

    标签: gitlab gitlab-ci-runner gitlab-ce


    【解决方案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 上的正确功能(如果存在)。
    猜你喜欢
    • 2020-09-20
    • 2021-09-06
    • 1970-01-01
    • 2022-08-11
    • 2022-01-07
    • 2021-06-04
    • 2021-11-30
    • 2021-04-17
    • 1970-01-01
    相关资源
    最近更新 更多