2016-11-22 4 views
4

私の目標は、カウンセリングビルドパイプラインを使ってmavenで構築されたJavaプロジェクトをビルド、パッケージ化、テストすることです。ビルド間でMavenリポジトリをキャッシュする方法は?

セットアップはそのままで、すべて正常に動作しますが、ビルド時間は私たちのネクサスからのダウンロード速度が悪いため長くなりすぎます。

私のビルドジョブYMLファイルは、Mavenのビルドのためのベースとして、以下のリソース使用しています:

# ... 
image_resource: 
    type: docker-image 
    source: 
    repository: maven 
    tag: '3.3-jdk-8' 
# ... 

を私はすべてのbuilsのために「白紙状態」を有するsomwhat設計によりコンコースに組み込まれているという事実を認識しています。

私の質問は、ローカルのMavenリポジトリをキャッシュする良い方法は何でしょうか(たとえば、Springのような基本的なものとそれが依存しているかのように)?依存関係がビルトインすでに

  • 限り、私に必要な依存関係を提供しressourceを作成しているドッキングウィンドウの画像を使用して

    1. 以下のオプションは、私の心に来てコンコースはビルドジョブのベースとして使用されているドッカーイメージをキャッシュしていないようです(または、私はここで間違っていますか?)

      私が前に進む前に、オプション2)が私に何かを与えてくれることを確認したいと思います - キャッシュドッカーの画像をソースとして使用しますか?

      私はカウンセリングに比較的新しいので、何かを逃してしまうかもしれません。私がここに明白に述べることを強いるなら、私を許してください。 :)

    答えて

    4
    • あなたのNexusがローカルであると仮定すると、NexusやArtifactoryのようなものを使って現在キャッシュを行うのが最も簡単な方法であるため、ダウンロード速度が悪いのがわかります。彼らはあなたのキャッシュされた依存関係の存続期間を管理するので、必要に応じてキャッシュされた依存関係がなくなり、新しい依存関係が使用時に追加されます。
    • 単一のジョブ内でキャッシュしたい場合は、outputタスクのキャッシュされた依存関係フォルダ(.m2フォルダ)を別のタスクのinputとして使用します。
    • あなたはジョブ間でキャッシュされたい場合は、あなた可能性:
      • キャッシュされたフォルダとのドッキングウィンドウのイメージを構築し、それを別のパイプラインを介して可能かもしれないが、あなたは、依存関係が更新されたときにことを管理する必要があります。
      • create a resourceあなたのためのキャッシュを管理します。たとえば、入力がgit-resourceであることが必要ですが、gradle-cache-resourceまたはnpm-cache-resourceを参照してください。
    • キャッシングを実行するために組み込まれた方法については、hereについて説明しています。

    私はコンコースCIは、タスクのために使用されるキャッシュドッキングウィンドウの画像を行い、また、あなたのパイプラインのリソースとして、それらを持っているし、そのリソースを渡すために、タスクのimageパラメータを使用することができると思います。 volumesコマンドをflyとすると、キャッシュされているものと表示されている時間を知ることができます。

    +0

    、話題の豊富なcovereageに感謝 - このような広範な質問をするときに私が期待していたことは恥ずかしいものでした:)ビルドを行うために使用するベースイメージをビルドする別のパイプラインを持つことになりました。私のケースでは、これは大きく分けて2分、1回のビルドから10分に短縮されました。 – sschuth

    +2

    @sschuthコンコースチームはRubyの宝石のためにこれを行うことについて[blog post](http://engineering.pivotal.io/post/concourse-docker-image-resource-cache-tutorial/)も公開しています。 – materialdesigner

    0

    concourseは実際にキャッシュドッカーの画像を確認することができるので、すべての依存関係を持つ画像を作成することは悪い選択肢ではないかもしれません。

    +0

    はい、タスクに使用されるドッカーイメージのキャッシュが機能するようになったことを確認できます。 – sschuth

    0

    あなたは、彼らが今ここでの場合と同様に、あなたのMavenのキャッシュのために同じメカニズムのキャッシングのためのGitのリソースタイプの使用を使用することができます。https://github.com/ymedlop-sandbox/npm-cache-resource(未私のレポを)

    グレート
    関連する問題