5
我正在使用GitLab CI作为项目,并且该过程的第一步是npm install
。我将缓存node_modules
以便稍后更快地执行相同的作业,并将它们定义为构建工件以便在后续阶段中使用它们。但是,即使我缓存了node_modules
并且它是最新的,每次运行install_packages
作业都需要很长时间,因为该命令遍历所有package.json
并检查软件包的更新等(我假设)。当package.json更新后,只有'npm install'在GitLab CI中
有什么办法可以只有运行npm install
在install_packages
工作取决于一些条件?更具体地说(我认为是最好的解决方案),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...
这听起来像是会做的伎俩,但你可以进一步指定?命令究竟应该是什么?就我所知,'npm install --cache'不存在。或者你是在谈论[npm缓存](https://docs.npmjs.com/cli/cache)cli命令?我不确定在GitLab CI中如何使用它。 – JorJor
@JorJor这是我发现的GitLab CI集成。希望它有帮助 – Jaxi
@JorJor https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/97 – Jaxi