您可以设置 Gitlab CI 阶段,以便其他阶段不等待它完成吗?

Can you set Gitlab CI stage so other stages don't wait for it to finish?

假设我在 .gitlab-ci.yml:

中定义了这些阶段
stages:
    - build
    - analysis
    - tests
    - deploy
    - post-deploy

因为 analysis 需要很多时间而且我不太关心结果(我也设置了 allow_failure: true)- 是否可以以某种方式定义开始 analysis 然后立即启动下一阶段tests?

我在 official docs.

上没有找到任何类似主题的参考资料

编辑:

主要思想是所有其他阶段都可以 运行 就好像 analysis 根本不存在一样。如果我将 analysistests 放在同一阶段,那么 analysistests 将同时 运行,但是 deploy 不会'在它们都完成之前不会启动。这可不行。我希望 tests 完成然后启动 deploy,在 deploy 完成后我想启动 post-deploy。我真的不关心 analysis 结果,我只是想触发它并继续部署。

每个阶段都是连续的。一个阶段将一个接一个地执行。

如果要并行处理分析和测试,则必须在同一阶段定义它们。

stages: 
 - build
 - processing
 - deploy
 - ...

analysis:
 stage: processing
 ...


tests:
 stage: processing
 ...

https://docs.gitlab.com/ce/ci/yaml/README.html#stage

在较新的 GitLab 版本中有一个解决方法:Trigger a child-pipeline for the jobs you don't want to wait for. By default a child-pipeline will return "success" as soon after it got started, you need to explicitly set the strategy 如果您想等待 child-pipeline 中的作业。所以 偶然 这正是你想要的行为。

UI 目前不是最好的,但我很肯定它会在 GitLab 的未来版本中得到改进。这毕竟是一种解决方法,但它应该可以完成工作。

从 v12.8 开始,您可以使用 needs: [] 立即开始作业。文档:https://docs.gitlab.com/ee/ci/yaml/#needs