GitLab CI-在文件内容更改时运行管道
我有几个项目的mono回购协议(不是我的设计选择) 每个项目都有一个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运行,但仅当“版本”文件的内容发生更改时?例如,当用户更改版本号时 下
.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