【问题标题】:Docker/GitLab: npm dependencies installed in docker image, but unmet via runnerDocker/GitLab:安装在 docker 镜像中的 npm 依赖项,但未通过 runner
【发布时间】:2017-10-11 04:40:18
【问题描述】:

首先,我正在检查测试 docker 映像,我在我的 gitlab CI 中将其用作 docker runner:

如果 docker 容器 (testing) 在里面运行这个命令...

meteor npm list --depth=0

给了我预期的结果:

npm info it worked if it ends with ok
npm info using npm@5.4.2
npm info using node@v8.6.0
project@1.0.0 /builds/namespace/project
+-- autoprefixer@7.1.5
+-- babel-runtime@6.26.0
+-- bcrypt@1.0.3
+-- fluent-ffmpeg@2.1.2
+-- gm@1.23.0
+-- gridfs-stream@1.1.1
+-- react@16.0.0

所以所有依赖项都安装在 docker 镜像中。现在我在我的 gitLab CI 中使用这张图片:

我的 gitLab CI yml 文件如下所示:

unit:
  image: testing:latest
  stage: unit
  tags:
    - testing
  script:
    - meteor npm list --depth=0

但结果是:

npm info it worked if it ends with ok
npm info using npm@5.4.2
npm info using node@v8.6.0
project@1.0.0 /builds/namespace/project
+-- UNMET DEPENDENCY autoprefixer@7.1.4
+-- UNMET DEPENDENCY babel-runtime@6.26.0
+-- UNMET DEPENDENCY bcrypt@1.0.3
+-- UNMET DEPENDENCY fluent-ffmpeg@2.1.2
+-- UNMET DEPENDENCY gm@1.23.0
+-- UNMET DEPENDENCY gridfs-stream@1.1.1
+-- UNMET DEPENDENCY react@15.6.0

为什么没有安装依赖项?我不想在 CI 每次运行作业时都安装它们。相反,我希望所有已安装在 docker 映像中的依赖项更快。

更新

运行 CI 阶段,没有node_modules 目录,该目录存在于 docker 镜像中... 如何防止gitlab删除文件夹?

【问题讨论】:

    标签: node.js docker npm gitlab


    【解决方案1】:

    这是因为当构建开始时,它会再次获取您的 repo,本质上是用新的克隆覆盖内容。最快的解决方法是将依赖项临时移动到不同的文件夹,然后在实际构建期间将它们移回。例如执行meteor npm installnode_modules 移动到/example/node_modules 然后在构建期间将它们移回/builds/namespace/project/node_modules

    【讨论】:

      猜你喜欢
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 2021-08-09
      • 1970-01-01
      相关资源
      最近更新 更多