限制gitlab管道(或只是多个作业)

问题描述 投票:0回答:2
通过提及我们正在与自己的跑步者一起使用本地gitlab,而不是

http://www.gitlab.com。借助我们的gitlab CI,我们通常从事多阶段的工作,在此工作取决于以前的工作中所做的工作 - 说我们有:

job1: script: - composer install job2: # run static checks on project job3: # build docker images from stuff installed in job1 job4: # run phpunit
现在每个作业都需要由

job1

安装的依赖项,在某些情况下可能是相当多的;在某些情况下,接近千兆字节的数据分布在成千上万的文件上。
我知道我可以用

artifacts

在工作之间将它们交给它们,但这似乎是一种疯狂的浪费,几乎没有用 - 我们没有数千名跑步者的舰队,但是只有少数跑步者,所以只能在同一个跑步者上经营所有工作会更加经济。

我对此进行了阅读,尽管有一个通过标签来运行特定跑步者上所有作业的机制,但我发现当要求“在任何随机可用的跑步者上运行”时,我只有其他人在挠头,然后在同一跑步者上运行其余的管道”。我们不想将我们的工作限制在任何特定的跑步者身上,我们只是不希望在特定管道实例中使用不同的跑步者。
有意义吗?我们感到惊讶的是,这不是常见和覆盖的用例,是否真的没有办法实现这一目标?

您可以尝试使用使用

GIT_CLEAN_FLAGS: -ffdx -e <folder or file>

在.yml文件的开头。这是记录的
gitlab continuous-integration gitlab-ci gitlab-ci-runner
2个回答

0
投票

如果您将使用工作空间之外的文件夹,则可能会遇到以前作业结果碰撞结果

    1. LL的假设K8S跑步者 - 完成工作后被摧毁,但是使用卷可以实现1.2。当然,具有相同的碰撞威胁和相同的额外清洁需求。
    2. 将管道分为工作的原因可能是:
    3. Clarity-您想通过允许仅重新运行小失败零件来简化调试过程

    资源优化 - 您想根据矩阵并行运行某些零件,另一个接一个地
  1. NEADS-每个工作可能都有不同的要求,例如OS,计算资源等等。

没有分裂,您将必须拥有一个具有所有必要程序的“怪物代理商”,并且足够强大,可以运行所有重型管道。随着时间的流逝,您可能还会意识到,很难跟上所有项目更新的所有这些程序。 另一方面,分类存在您描述的问题,例如由于大量上传/下载而放慢脚步,缓存无法在并行作业上正常工作等等。

Imho,没有一个正确的解决方案。您必须在每一步中加重利弊。仔细设计工作,以使工件的最小尺寸减小。尽可能利用服务和并行工作。而且,当可见性小于建立速度的重要性时,请尽可能多地投入一项工作。

最终,Gitlab CI与所有工具一样,并不是完美的,您可能会意识到,对于某些项目,另一个CI/CD平台将使您更适合您。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.