プロジェクトにGitLabCIを使用していますが、プロセスの最初のステップは_npm install
_です。後で同じジョブをすばやく実行するために_node_modules
_をキャッシュし、後の段階で使用するためにビルドアーティファクトとして定義します。ただし、_node_modules
_をキャッシュして最新の状態にしていますが、_npm install
_ジョブが実行されるたびに_install_packages
_を呼び出すと、コマンドがすべての_package.json
_そしてパッケージなどの更新をチェックします(私は推測します)。
条件に応じて、_npm install
_ジョブで_install_packages
_をonly実行する方法はありますか?より具体的には(私が最善の解決策だと思うもの)、前回のビルド以降に_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...
_
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
もう1つのポイントは、キャッシュを正しい方法で設定したかどうかです。これを読んでください: https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-cachinghttps://docs.gitlab.com/ee/ci/caching /
--cacheオプションを指定してnpmをインストールしていますか?人々が持っているいくつかのGitlabCIランナーでこの問題を聞いたことがあり、これがほとんどの場合の解決策です。
それが役に立てば幸い!