Gitlab-ci:如果 MR 存在,则触发 merge_request 分离管道,如果不存在,则触发源分支管道。这两条管道不应同时运行

2024-03-01

当我创建 MR 时,我想在 MR(合并请求)命令部分查看声纳结果。

我的主要期望:

  • 如果源分支存在现有 MR,则触发分离管道(不触发功能管道。我只需要那个来检查 MR 命令中的声纳结果)
  • 如果源分支没有现有的 MR,则只需触发正常的功能(源)分支管道

我尝试用下面的示例阶段来做到这一点。但是当我将提交推送到源管道时,而源分支存在 MR。我仍然得到双管道。分离管道和源管道正在运行,我不想同时看到两者,而且除了不使用规则配置之外。如何将除部分与规则部分集成。

这是我的 gitlab-ci 阶段:

deploy:
  stage: deployment
  when: manual
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CUSTOM_VARIABLE == "true" || $CUSTOM_VARIABLE == "true"'
  script:
    - ....
    - ....
  except:
    - tags
    - main

我还尝试了以下规则,如果其中一项符合我的条件,则不要运行另一项。但它仍然触发两条管道。

deploy:
  stage: deployment
  when: manual
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CUSTOM_VARIABLE == "true"'
      when: on_success
    - if: '$CI_PIPELINE_SOURCE == "push" && $CUSTOM_VARIABLE == "true"'
      when: on_success
  script:
    - ....
    - ....
  except:
    - tags
    - main

覆盖于workflow:rules模板 https://docs.gitlab.com/ee/ci/yaml/index.html#workflowrules-templates,在这种情况下,您可以使用CI_OPEN_MERGE_REQUESTS多变的 https://docs.gitlab.com/ee/ci/variables/predefined_variables.html确定是运行合并请求管道还是仅运行功能分支。

如果您同时使用[合并请求管道和分支管道],则可能会同时运行重复的管道。为了防止重复管道,请使用 CI_OPEN_MERGE_REQUESTS 变量。

Using workflow:rules您可以对整个管道执行此操作,但相同的原则也可以应用于单个作业。

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
    - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
      when: never
    - if: '$CI_COMMIT_BRANCH'

这意味着您的管道将运行:

  • 对于合并请求
  • 对于分支管道,除非有开放的合并请求
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gitlab-ci:如果 MR 存在,则触发 merge_request 分离管道,如果不存在,则触发源分支管道。这两条管道不应同时运行 的相关文章

随机推荐

  • 来自 createFileAtPath 的更详细错误?

    无论如何 是否可以从 createFileAtPath 获取更详细的错误数据 我有点期待 NSError 目前我正在使用 BOOL 返回值 success fileMan createFileAtPath fileOnDisk conten
  • XSD:大型模式验证

    我正在尝试使用 JAXP 和 SAX 解析器根据非常大的工业模式验证 xml 文件 问题是 验证即使是很小的 XML 文件也需要很长时间 我正在运行 Apache Tomcat 6 0 我尝试将堆大小增加到 1024 但这没有多大帮助 我还
  • 在 Visual Studio 中调试可执行文件

    想要在调试器下调试可执行文件 如何在视觉工作室中做到这一点 Windbg 有一个打开可执行文件的选项 但我发现 VS 2010 中缺少这一点 这个问题并不完全相同在 Visual Studio 2010 中调试 exe https stac
  • 字符串的长度超过了 maxJsonLength 属性上设置的值

    我正在通过 jQuery 加载选项卡内容数据ajax通过 web 方法发布方法 大约有 200 300 条记录 并在控制台中出现以下错误 错误 Sys Net WebServiceFailedException Sys Net WebSer
  • 在 JMockit 中模拟被测类的私有方法

    在我的被 测类 CUT 中 一个 ejb 我有一个私有方法 getConnection 我想测试另一种 CUT 方法 但这种方法会提前失败 我尝试了如下所示 但 调用 是错误的 我不想调用该方法 我想存根它 但如何呢 连接 是一个存根 ne
  • 如何在主机之间迁移 Docker 卷?

    码头工人的文档 https docs docker com engine admin volumes volumes 指出卷可以 迁移 我假设这意味着我应该能够将卷从一台主机移动到另一台主机 非常乐意在这一点上得到纠正 但是 同一文档页面没
  • 获取单元 apache poi 的名称

    我有一个 Cell 对象 如何获取该单元格的名称 想要一个函数 例如 String name myCell getName 在Excel中 我已在名称框中对其进行命名 因此我不想获得 B4 我想获得诸如 InterestRate 之类的名称
  • 元素不会重定向到另一个页面并且不可点击

    我创建了一个 Web 组件 在其中声明了创建版权字符串的方法 p Copyright 2020 Krzysztof Kaczy ski a href https www google com Policy terms a p 然后我把这个字
  • 如何为 Mac OS X 编写启动脚本?

    我用java创建了一个jar文件 我想让应用程序在系统启动时自动启动 我发现我必须为此编写一个 shell 脚本 shell 脚本应该是什么样子 我还需要做些什么才能使应用程序在启动时自动启动吗 在 OS X 启动时启动程序的首选方法是创建
  • Altair Ridgeline 不会创建具有名义组的绘图

    我尝试在 Altair 中创建山脊线图 假设我的数据框由 str 和 float 列组成 a object b float64 dtype object 具有像这样的值 a b 0 25 2303 0 1 29 2676 0 2 18 29
  • 问:如何在多个设备上运行单个测试?

    我试图了解如何在多个设备中启动自动化测试 但我无法真正找到我想要的东西 我每个类有大约 5 个测试 我只想在所有连接的设备中执行一个测试 例如登录的端到端测试 我尝试使用连接的设备 但它不仅仅启动我想要的测试 我正在使用 Espresso
  • 如何在量角器测试中单击选择框中的选项?

    我正在使用 Protractor 在 Angular 应用程序中进行端到端测试 我试图单击选择框中的选项 但出现以下错误元素当前不可见 并且可能无法操作 我有这部分html
  • AuthenticationCredentialsNotFoundException:安全上下文不包含身份验证令牌

    我收到以下错误 AuthenticationCredentialsNotFoundException 安全上下文 不包含身份验证令牌 一个可能的原因可能是 没有为此 URL 配置防火墙 我尝试过解决方案 因为我知道当没有为路由配置安全防火墙
  • 在不同的目录中创建共享部分包结构的多个Python模块

    我正在开发一个包含单个应用程序的 Django 项目 该应用程序将在 GPL 下发布 因此我想将其与项目分开开发 使用该应用程序的个人网站 我试图对项目和应用程序使用基于我的域名的包结构 这就是我遇到问题的地方 这是我的文件结构 在适当的情
  • 更改 RichTextBox 的字体而不丢失格式

    如何在不丢失格式的情况下更改richtextbox所有内容的字体 我正在尝试使用 rtb SelectAll rtb SelectionFont new Font fontName 但字体构造函数除了字体类型之外还必须采用字体样式 粗体 斜
  • Handlebars.js 使用 noEscape 选项禁用转义?

    我已经预先转义了所有内容 因此我不想在任何地方使用三重存储 而是希望全局禁用车把转义 快速搜索显示了类似的功能 我可以在我的车把版本中看到该功能 但我不知道如何打开它 拉取请求在这里 https github com wycats hand
  • 查询响应请检查参考手册中的“函数名称解析和解析”部分

    有人可以向我解释一下这有什么问题吗 SELECT COUNT ID FROM tableImSpecifying WHERE VisitorsEmail VarThatHoldsEmailFromA POSTInput 这是我在遵循教程时编
  • 如何在配置文件中将模式设置为开发或生产?

    我们正在迁移到 webpack 4 我们已经有了 dev prod 配置文件 我们开始收到此警告消息 WARNING in configuration The mode option has not been set Set mode op
  • 在程序源文件中使用脚本变量 OMP_NUM_THREADS

    如果我在集群上运行 C 代码 是否可以在我的程序中使用 OMP NUM THREADS 的值 例如 假设我有两个 cpp 文件 main cpp 和 func cpp 其中 func cpp 是使用 OpenMP 并行编写的 我希望能够定义
  • Gitlab-ci:如果 MR 存在,则触发 merge_request 分离管道,如果不存在,则触发源分支管道。这两条管道不应同时运行

    当我创建 MR 时 我想在 MR 合并请求 命令部分查看声纳结果 我的主要期望 如果源分支存在现有 MR 则触发分离管道 不触发功能管道 我只需要那个来检查 MR 命令中的声纳结果 如果源分支没有现有的 MR 则只需触发正常的功能 源 分支