GitLab CI-在文件内容更改时运行管道

GitLab CI-在文件内容更改时运行管道,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我有几个项目的mono回购协议(不是我的设计选择) 每个项目都有一个.gitlab ci.yml设置,用于在“版本”文件更改时运行管道。这很好,因为用户可以签入到stage或master(用于热修复),并创建一个构建并部署到测试环境中 问题是当用户从master合并到stage并提交回stage(以获取任何热修复程序)时。这导致所有管道都在运行;即使对于没有实际内容更改的项目也是如此 如何允许管道从master和/或stage运行,但仅当“版本”文件的内容发生更改时?例如,当用户更改版本号时 下

我有几个项目的mono回购协议(不是我的设计选择)

每个项目都有一个
.gitlab ci.yml
设置,用于在“版本”文件更改时运行管道。这很好,因为用户可以签入到
stage
master
(用于热修复),并创建一个构建并部署到测试环境中

问题是当用户从
master
合并到
stage
并提交回
stage
(以获取任何热修复程序)时。这导致所有管道都在运行;即使对于没有实际内容更改的项目也是如此

如何允许管道从
master
和/或
stage
运行,但仅当“版本”文件的内容发生更改时?例如,当用户更改版本号时

下面是
.gitlab ci.yml
的一个示例(我有5个,mono repo中每个项目1个)

。。。等等


我对git、GitLab和CI/管道仍然是新手。任何帮助都将不胜感激!(我对更改mono repo几乎没有发言权)

以下
.gitlab ci.yml
仅当文件
版本更改时才会运行测试作业

test_job:
  script: echo hello world
  rules:
    - changes:
      - version

另见

谢谢您提供的信息。这似乎奏效了。一些项目仍在重新部署,但我认为这是意料之中的。如果
master
有热修复程序,并且我从
master
合并到
stage
并提交
stage
,则CI将触发,因为
版本在
stage
中更改。(热修复程序版本已增加)后续问题。为什么
仅:更改:
重新部署所有内容?
规则:-changes
有何不同?Thank you only/except已弃用。对于文件更改的同一提交,此操作似乎将在管道的后续手动触发器上运行。有没有办法在文件更改时只运行一次,即使提交是在多个管道运行中重新运行的?@Andrewarvey,据我所知还没有。您可以将状态保留在某个位置,并在发现您正在进行后续运行后中止运行。
test_job:
  script: echo hello world
  rules:
    - changes:
      - version