8

私の目標は、councourse ビルド パイプラインを使用して maven でビルドされた Java プロジェクトをビルド、パッケージ化、およびテストできるようにすることです。

セットアップ自体は整っており、すべて正常に動作しますが、nexus からの Maven のダウンロード率が低いため、ビルド時間が長すぎます。

私のビルド ジョブの yml ファイルは、maven ビルドのベースとして次のリソースを使用します。

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

私は、すべての建物に「白紙の状態」を持たせることが、設計上コンコースにある程度組み込まれているという事実を認識しています。

ここで私の質問は次のとおりです。ローカルの Maven リポジトリをキャッシュする良い方法は何でしょうか (たとえば、Spring のような内部に少なくともいくつかの基本的なものとその依存関係があります)。

次のオプションが頭に浮かびます:

  1. 依存関係が既に組み込まれている docker イメージを使用する
  2. 必要な依存関係を提供するリソースを作成する

私が見る限り、オプション 1) はビルドのダウンロード サイズを小さくしません。これは、コンコースがビルド ジョブのベースとして使用される Docker イメージをキャッシュしないように見えるためです (または、ここで間違っていますか?)

先に進む前に、次のオプション 2) が何らかの利点をもたらすことを確認したいと思います - コンコースはリソースとして使用される docker イメージをキャッシュしますか?

私はカウンセリングに比較的慣れていないため、何かを見逃す可能性があります。ですから、ここで明白なことを述べるように強制する場合は、ご容赦ください。:)

4

3 に答える 3

10
  • Nexus がローカルにあると仮定すると、Nexus や Artifactory のようなものをローカルで使用することが現時点でキャッシュを行う最も簡単な方法であるため、そこからのダウンロード率が低い理由を調べます。それらはキャッシュされた依存関係の有効期間を管理するため、依存関係が必要以上に長くキャッシュされず、新しい依存関係が使用されるにつれて追加されます。
  • ジョブのタスク間でキャッシュを共有する場合は、タスクのoutputキャッシュされた依存関係フォルダー ( .m2maven のフォルダー) をinput別のタスクの として使用します。参考までに、次の例を参照してください。
 ---
 jobs:
   - name: create-and-consume
     public: true
     plan:
       - task: make-a-file
         config:
           platform: linux
           run:
             # ...
           outputs:
             # ensure that relative .m2 folder is used: https://stackoverflow.com/a/16649787/5088458
             - name: .m2
       - task: consume-the-file
         config:
           platform: linux
           inputs:
             - name: .m2
           run:
             # ...

Concourse CI はタスクに使用される Docker イメージをキャッシュすると思いますが、それらをパイプラインのリソースとして保持しimage、タスクのパラメーターを使用してそのリソースを渡すこともできます。volumesのコマンドを使用して、キャッシュされている内容とその期間を確認できますfly

于 2016-11-22T09:20:58.190 に答える
0

ここで現在行っているのと同じように、 gitリソース タイプが Maven キャッシュのキャッシュに使用するのと同じメカニズムを使用できます。

于 2016-12-02T20:39:16.947 に答える
0

コンコースが実際に docker イメージをキャッシュしていることを確認できるので、すべての依存関係を持つイメージを作成することは悪い選択肢ではないかもしれません。

于 2016-11-23T00:22:00.877 に答える