我正在为项目使用GitLab CI,该过程的第一步是npm install
。我稍后会缓存node_modules
以便更快地运行相同的作业,并将它们定义为构建工件,以便在后续阶段使用它们。但是,即使我缓存node_modules
并且它是最新的,每次运行npm install
作业时调用install_packages
需要很长时间,因为命令通过所有package.json
并检查包的更新等(我假设)。
根据某些情况,有没有办法 在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...
答案 0 :(得分:0)
你是否使用--cache选项安装?我已经听过一些人们拥有的Gitlab CI跑步者这个问题,这是解决方案的最佳时机。
希望它有所帮助!
答案 1 :(得分:0)
只需使用only:changes
标志doc
工作将是:
install_packages:
stage: install
script:
- npm prune
- npm install
cache:
key: ${CI_BUILD_REF_NAME}
paths:
- node_modules/
artifacts:
paths:
- node_modules/
only:
refs:
- master
- develop
changes:
- package.json
另一点是:您设置缓存的正确方法吗? 读这个: https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching https://docs.gitlab.com/ee/ci/caching/