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>
我不知道您的组织的规模,但我可以通过您要实现的目标引起一些担忧:
LET的假设VM跑步者,为简单起见,假设您只有一个可用的跑步者。如果您有两个并行管道运行,则两者都会降落在同一(仅)跑步者上。有了这个问题,您可以遇到两个问题之一:
工作完成后您禁用清洁 - 现在您必须添加一些Cron作业才能清理,否则它们会变得混乱■如果您将使用工作空间之外的文件夹,则可能会遇到以前作业结果碰撞结果
将管道分为工作的原因可能是:
NEADS-每个工作可能都有不同的要求,例如OS,计算资源等等。
Imho,没有一个正确的解决方案。您必须在每一步中加重利弊。仔细设计工作,以使工件的最小尺寸减小。尽可能利用服务和并行工作。而且,当可见性小于建立速度的重要性时,请尽可能多地投入一项工作。
最终,Gitlab CI与所有工具一样,并不是完美的,您可能会意识到,对于某些项目,另一个CI/CD平台将使您更适合您。