GitLab CI - 保持最后的管道状态

Posted

技术标签:

【中文标题】GitLab CI - 保持最后的管道状态【英文标题】:GitLab CI - Keep last pipeline status 【发布时间】:2021-12-15 09:52:46 【问题描述】:

在 GitLab CI 中,当推送时没有作业排队时,是否可以保持最后一个管道状态?我的.gitlab-ci.yml 中有这样的changes 规则设置:

changes: 
  - Assets/*
  - Packages/*
  - ProjectSettings/*
  - .gitlab-ci.yml

适用于管道中的所有作业(这些是 Unity 的构建作业,尽管无关紧要)。注意:如果有任何需要重建的实际文件更改,我只想运行构建作业。对README.mdCONTRIBUTING.md 的更改不是需要重建的更改,所以这就是我有这样一个规则的原因。

问题是我需要成功的管道来合并分支,当我尝试合并修改 README.md 的分支时,显然没有管道。

有没有办法只“重用”先前管道的结果,或者有一个在任何推送时立即成功的“虚拟”作业,以便能够合并这个分支而不需要对整个分支进行昂贵的重建项目?

【问题讨论】:

【参考方案1】:

正如您在上一段中提到的,解决此问题的唯一方法是注入一个始终成功的虚拟作业;脚本中的 echo "hello world" 之类的东西。

但是,根据您的测试运行多长时间,您最好的选择可能是每次都运行您的测试,而不考虑更改。使用 changes 关键字运行的任何类型的部分管道都会让您可以合并破坏管道的更改。它本质上将管道中的逻辑与代码的组件结构紧密耦合,这并不总是一件好事,因为管道的一个要点是捕获这些类型的跨组件损坏。

【讨论】:

以上是关于GitLab CI - 保持最后的管道状态的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab-ci - 管道无法运行

GitLab CI 管道阶段超时

如何从 gitlab CI 管道中推送到仓库?

gitlab CI 管道检查代码格式

在 GitLab CI 管道中使用 docker-compose

问:Gitlab CI 谁重试旧管道