Node.js GitLab CI作业需要20+;会议记录
对于gitlab ci,我使用的是一个简单的.yml文件。我定义了同步运行的各个阶段。我已经为节点_模块设置了缓存。但问题是节点_模块的缓存实际上减慢了进程。需要此缓存才能使每个阶段的节点_模块相同。(由于某种原因,每个阶段自动清除/node_模块) 在本地构建时,整个过程只需不到2分钟。但在CI机器上,此过程需要20到25分钟。在了解Gitlab CI如何在内部工作时,我了解到它正在压缩node_模块文件(大约36K个小文件),而且这个过程非常缓慢 tl;dr:在不将节点模块上传到工件的情况下,用Gitlab CI处理节点模块缓存的正确方法是什么?我希望避免上传大于400MB的工件 请参阅下面的配置:Node.js GitLab CI作业需要20+;会议记录,node.js,continuous-integration,gitlab,gitlab-ci,Node.js,Continuous Integration,Gitlab,Gitlab Ci,对于gitlab ci,我使用的是一个简单的.yml文件。我定义了同步运行的各个阶段。我已经为节点_模块设置了缓存。但问题是节点_模块的缓存实际上减慢了进程。需要此缓存才能使每个阶段的节点_模块相同。(由于某种原因,每个阶段自动清除/node_模块) 在本地构建时,整个过程只需不到2分钟。但在CI机器上,此过程需要20到25分钟。在了解Gitlab CI如何在内部工作时,我了解到它正在压缩node_模块文件(大约36K个小文件),而且这个过程非常缓慢 tl;dr:在不将节点模块上传到工件的情况下
cache:
untracked: true
key: "%CI_COMMIT_REF_NAME%"
paths:
- node_modules
stages:
- install
- eslint-check
- eslint
- prettier
- test
- dist
# install dependancies
install:
stage: install
script:
- yarn install
environment:
name: development
# run eslint-check
eslint-check:
stage: eslint-check
script:
- yarn eslint-check
environment:
name: development
# Other scripts below
由于这个问题已经在这里讨论了将近两年,看来将来会有一个解决办法。已设置里程碑,以便最终解决此问题
使用将缓存构建目录中的每个未跟踪文件,我相信不仅仅是
节点模块。如果删除untracked:true
它可能会有更少的文件要缓存?@Rekovni我忽略了它实际上对每个未跟踪的文件计数,而不是我指定的glob。安装后不应该有这么多。但这确实值得研究。不幸的是,它没有影响任何性能,因为未跟踪的文件在该项目中得到了很好的控制。您的节点\u模块是否每次运行时都会发生更改?还是大体相同?另外,您知道您运行的是哪台机器吗?或者每次运行都不一样吗?我们会努力使模块版本保持最新,以便尽早发现迁移问题,而不是很晚。我们在VM服务器上有一个Gitlab运行程序,它在windows机器上运行这些任务。