Я использую 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...