当package.json已更新时,在Gitlab CI中只需运行“npm install”。

21

我正在使用GitLab CI进行项目开发,该过程的第一步是npm install。为了以后相同作业更快地运行,我缓存了node_modules,并将其定义为构建产物,以便在以后的阶段中使用它们。但是,即使我缓存了node_modules并且更新到最新状态,每次运行install_packages作业时调用npm install都需要很长时间,因为该命令会遍历整个package.json并检查包等是否有更新(我猜测)。

是否有任何方法可以根据某些条件仅在install_packages作业中运行npm install? 更具体地说(我认为这将是最好的解决方案),是不是自上次构建以来package.json已更改?

以下是我.gitlab-ci.yml文件的相关部分:

image: node:6.9.1

stages:
  - install
  - prepare
  - deploy

install_packages:
  stage: install
  script:
    - npm prune
    - npm install
  cache:
    key: ${CI_BUILD_REF_NAME}
    paths:
      - node_modules/
  artifacts:
    paths:
      - node_modules/
  only:
    - master
    - develop

build_and_test:
  stage: prepare
  script:
    #do_stuff...

deploy_production:
  stage: deploy
  #do_stuff...

deploy_staging:
  stage: deploy
  #do_stuff...
2个回答

9

1
你是否在使用npm安装时加上了--cache选项?我听说有些Gitlab CI运行器会遇到这个问题,而这通常是解决方案。
希望能对你有所帮助!

听起来这似乎是个解决方法,但你能进一步说明吗?命令应该具体是什么?据我所知,npm install --cache不存在。你是说npm cache cli命令吗?我不确定如何在GitLab CI中使用它。 - jorundur
@JorJor 这是我找到的关于GitLab CI集成的内容。希望对你有所帮助。 - Sasha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接