社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

如何在Gitlab中禁用“分离”管道?

George Shuklin • 2 年前 • 510 次点击  

我们有一个普通的存储库,带有一些代码和测试。

一份工作有“规则”声明:

  rules:
    - changes:
      - foo/**/*
      - foo_scenarios/**/*
      - .gitlab-ci.yml

问题在于 rules 导致Gitlab运行“分离管道”,这不是我的本意,而且很烦人。有没有办法禁用那些“分离”的管道,但保持 规则 部分到位了吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132287
 
510 次点击  
文章 [ 2 ]  |  最新文章 2 年前
Valentin Despa
Reply   •   1 楼
Valentin Despa    2 年前

事情实际上更复杂,因为这取决于不同的情况。所以这个解决方案可能对你有用,但其他人可能需要稍微调整一下。

以下是我对它的理解。一旦将规则添加到管道中,就会覆盖一些默认值,这些默认值会阻止合并请求管道的创建。

@Benjamin建议的解决方案是可行的,但正如您所注意到的,需要将其添加到每个工作中。所以大多数作业都需要重复配置。

我建议您研究一下工作流:它允许您定义默认行为。你只需要为有特殊规则的工作制定规则。

下面是一个例子:

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

如果你想更深入地了解这一行为,我已经写了一篇关于这一点的文章(没有中等订阅的人的朋友链接):

Fix GitLab CI Duplicate Pipelines in Merge Requests when Using rules:

Benjamin
Reply   •   2 楼
Benjamin    2 年前
rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      when: never
    - changes:
      - foo/**/*
      - foo_scenarios/**/*
      - .gitlab-ci.yml
      when: always

我还没有测试过,但我相信这就是你想要的。 This page this one too 都很容易导航,对于找到基本gitlab ci的答案非常有帮助。yml问题。

编辑-Gitlab将按顺序评估规则,一旦满足其中一个条件,它就会停止评估后续规则。在这种情况下,它将评估 if: '$CI_PIPELINE_SOURCE == "merge_request_event"' 首先,如果计算结果为true,则不会再检查更多规则。如果第一条规则的计算结果为false,它将转到下一条规则。