2016-11-15 9 views
5

私はGitLab CIをプロジェクトに使用しています。プロセスの最初のステップはnpm installです。私はnode_modulesをキャッシュして、後で同じジョブをすばやく実行できるようにし、ビルド成果物として後のステージで使用するように定義します。ただし、node_modulesをキャッシュして最新の状態にしていても、install_packagesジョブが実行されるたびにnpm installを呼び出すのには、コマンドがpackage.jsonのすべてを通過し、パッケージなどの更新をチェックするため、時間がかかります。package.jsonが更新されたときにGitLab CIで 'npm install'のみ

何らかの状態によってはinstall_packagesジョブでのみが実行npm installになりますか?より具体的には(私が考えているのはベストソリューションでしょう)、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

あなたは--cacheオプションでインストールNPMはありますか?私は人々が持っているいくつかのGitlab CIランナーでこの問題を聞いたことがあり、これはほとんどの場合解決策です。

希望すると助かります!

+0

これは、このトリックを行うようなものですが、さらに指定することはできますか?コマンドは正確に何をすべきですか? 'npm install --cache'は私の知る限り存在しません。または、あなたは[npm cache](https://docs.npmjs.com/cli/cache)cliコマンドについて話していますか?私はGitLab CIでこれをどのように使用するかについてはわかりません。 – JorJor

+0

@JorJorこれは私がGitLab CI統合のために見つけたものです。希望があれば – Jaxi

+0

@JorJor https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/97 – Jaxi

関連する問題