当更改仅为选定文件时的Gitlab CI规则



我正在尝试修改现有的gitlab CI管道,以便;部署";如果合并请求的已更改文件列表与正在部署的实际代码无关,则stage不会启动。

deploy:
extends: .standard_template
only:
- master
- main

现在,部署只发生在master或main分支上,我想继续同样的逻辑,但我也想介绍一个额外的逻辑,即如果唯一更改的是readme.md,那么就不要进行部署。

我已经看到gitlabs对changes:规则的支持,该规则似乎需要列出文件的匹配子集。我想要的是匹配一整套readme.md并中止/不启动部署。

这在gitlab的语法下可能吗?我知道我可以写更多的";乔布斯;为了完成我自己的script:规则,我使用git树来检查更改,但随后我必须退出1,这基本上会导致管道失败,这会导致构建中出现一堆红色故障或不完整的作业,而我真正想要的只是省略这一部分。

您可以使用几个rules:

deploy:
extends: .standard_template
rules:
- if: $CI_COMMIT_BRANCH != "main" && $CI_COMMIT_BRANCH != "master"
when: never
- changes:
- readme.md
when: never
- when: always

第一条规则与only: main or master子句相同。如果$CI_COMMIT_BRANCH不是mainmaster,则不会将作业添加到管道中。

第二条规则查看readme.md文件是否有更改,但明确添加了when条件:never

如果前两条规则不匹配,则第三条规则为默认情况。

总之,如果分支不是主/主分支,就不要运行,如果自述文件有更改,就不要执行,否则就一直运行。

注意:您可能需要对此进行一点扩展,因为这不包括标记管道、合并请求管道等,但只需使用一些附加规则即可。

最新更新