2017-05-03 16 views
4

Gulpを使用して構築するGitLab Pagesサイトがあります。マイ.gitlab-ci.ymlファイルは次のようになります。GitLab CI:インストールしたnpmパッケージをジョブ間で再利用するにはどうすればよいですか?

image: node:latest 

before_script: 
    - npm install gulp-cli -g 
    - npm install gulp [...and a whole bunch of packages] --save-dev 

build: 
    stage: build 
    script: 
    - gulp buildsite 
    artifacts: 
    paths: 
    - public 

pages: 
    stage: deploy 
    script: 
    - gulp 
    artifacts: 
    paths: 
    - public 

cache: 
    paths: 
    - node_modules/ 

両方buildpages雇用する前に、npm installコマンドは(一度、各ジョブの前に)実行されます。私はかなりのパッケージを持っているので、これはしばらく時間がかかります。

ビルド全体で一度だけインストールを行う方法はありますか?

cacheが助けてくれると思っていましたが、それでもまだすべてをダウンロードしているようです。

+1

node_modulesを100%の時間間隔で送信する必要がある場合は、キャッシュシステムに保証はありません。アーティファクトを使用してください。http://stackoverflow.com/a/43722345/6654146有効期限を追加することもできます成果物に送信して、サーバー上に永遠に保持されないようにします – Jawad

答えて

1

コメントの回答は本質的に正しいですが。私はあなたのケースに対する具体的な答えが良いと思う。

image: node:latest 

stages: 
    - prep 
    - build 
    - deploy 

before_script: 
    - npm install gulp-cli -g 

prep: 
    stage: prep 
    script: 
    - npm install gulp [...and a whole bunch of packages] --save-dev 
    artifacts: 
    paths: 
    - node_modules 
    cache: 
    paths: 
    - node_modules 

build: 
    stage: build 
    script: 
    - gulp buildsite 
    artifacts: 
    paths: 
    - public 

pages: 
    stage: deploy 
    script: 
    - gulp 
    artifacts: 
    paths: 
    - public 

このソリューションは、一度だけインストールを実行し、キャッシュします:あなたが使用できる一つの方法は、ノードモジュールを取り付けるの負荷を負担するプラスあなたも、後続をスピードアップするためにそれらをキャッシュする可能性が第三段階のビルド追加されます将来のciパイプラインの結果では、ノードモジュール成果物に有効期限を設定することもできます。

関連する問題