假设我在.gitlab-ci.yml
中定义了这些阶段:
stages:
- build
- analysis
- tests
- deploy
- post-deploy
由于analysis
需要花费大量时间而且我并不关心结果(我也设置了allow_failure: true
) - 是否有可能以某种方式定义以启动analysis
和然后立即启动下一阶段tests
?
我在official docs上找不到任何关于类似主题的引用。
编辑:
主要思想是所有其他阶段都可以像analysis
甚至不存在一样运行。如果我将analysis
置于与tests
相同的阶段,则analysis
和tests
将同时运行,但是deploy
将不会启动两人都完成了。这不好。我希望tests
完成,然后在deploy
完成之后启动deploy
我想要启动post-deploy
。我真的不关心analysis
结果,我只是想触发它并继续部署。
答案 0 :(得分:2)
根据定义,阶段是连续的。一个阶段将陆续执行。
如果要并行处理分析和测试,则必须在同一阶段定义它们。
stages:
- build
- processing
- deploy
- ...
analysis:
stage: processing
...
tests:
stage: processing
...
答案 1 :(得分:0)
在较新的GitLab版本中有一种解决方法:Trigger a child-pipeline用于您不想等待的作业。默认情况下,子管道启动后将立即返回“成功”,如果要等待子管道中的作业,则需要显式set the strategy。因此,偶然这正是您想要的行为。
UI目前不是最好的,但是我很肯定它将在以后的GitLab版本中得到改善。毕竟这是一种解决方法,但应该可以完成工作。
答案 2 :(得分:0)
从 v12.8 开始,您可以使用 needs: []
立即启动作业。文档:https://docs.gitlab.com/ee/ci/yaml/#needs