Ich verwende GitLab CI für ein Projekt und der erste Schritt des Prozesses ist npm install
. Ich cache node_modules
für schnellere Ausführungen des gleichen Jobs später und definiere sie auch als Build-Artefakte, um sie in späteren Phasen zu verwenden. Obwohl ich node_modules
cache und es auf dem neuesten Stand ist, dauert der Aufruf von npm install
jedes Mal, wenn derJob ausgeführt wird, lange, da der Befehl alle package.json
durchläuft und nach Updates von Paketen und solchen prüft (nehme ich an).Nur 'npm install' in GitLab CI, wenn package.json aktualisiert wurde
Gibt es eine Möglichkeit zu nur Laufe npm install
im install_packages
Job auf einer Bedingung abhängig? Genauer gesagt (was ich denke, wäre die beste Lösung), ob package.json
seit dem letzten Build geändert wurde oder nicht?
Unten ist der relevante Teil meiner .gitlab-ci.yml Datei:
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...
Das klingt wie etwas, das den Trick tun würde, aber könnten Sie weiter spezifizieren? Was genau sollte der Befehl sein? 'npm install --cache' existiert meines Wissens nicht. Oder redest du vom [npm Cache] (https://docs.npmjs.com/cli/cache) CLI-Befehl? Ich bin nicht sicher, wie ich das in GitLab CI verwenden würde. – JorJor
@JorJor das habe ich für die Integration von GitLab CI gefunden. Hoffe es hilft – Jaxi
@JorJor https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/97 – Jaxi