您可以设置 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
根本不存在一样。如果我将 analysis
与 tests
放在同一阶段,那么 analysis
和 tests
将同时 运行,但是 deploy
不会'在它们都完成之前不会启动。这可不行。我希望 tests
完成然后启动 deploy
,在 deploy
完成后我想启动 post-deploy
。我真的不关心 analysis
结果,我只是想触发它并继续部署。
每个阶段都是连续的。一个阶段将一个接一个地执行。
如果要并行处理分析和测试,则必须在同一阶段定义它们。
stages:
- build
- processing
- deploy
- ...
analysis:
stage: processing
...
tests:
stage: processing
...
在较新的 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
假设我在 .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
结果,我只是想触发它并继续部署。
每个阶段都是连续的。一个阶段将一个接一个地执行。
如果要并行处理分析和测试,则必须在同一阶段定义它们。
stages:
- build
- processing
- deploy
- ...
analysis:
stage: processing
...
tests:
stage: processing
...
在较新的 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