Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js GitLab CI作业需要20+;会议记录_Node.js_Continuous Integration_Gitlab_Gitlab Ci - Fatal编程技术网

Node.js GitLab CI作业需要20+;会议记录

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:在不将节点模块上传到工件的情况下

对于gitlab ci,我使用的是一个简单的.yml文件。我定义了同步运行的各个阶段。我已经为节点_模块设置了缓存。但问题是节点_模块的缓存实际上减慢了进程。需要此缓存才能使每个阶段的节点_模块相同。(由于某种原因,每个阶段自动清除/node_模块)

在本地构建时,整个过程只需不到2分钟。但在CI机器上,此过程需要20到25分钟。在了解Gitlab CI如何在内部工作时,我了解到它正在压缩node_模块文件(大约36K个小文件),而且这个过程非常缓慢

tl;dr:在不将节点模块上传到工件的情况下,用Gitlab CI处理节点模块缓存的正确方法是什么?我希望避免上传大于400MB的工件

请参阅下面的配置:

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机器上运行这些任务。