2017-04-05 8 views
1

AWS CodeBuildを使用してAWS CodeCommitに格納されたプロジェクトを構築し始めました。 私たちのプロジェクトはいくつかのサードパーティのライブラリに依存しています。ほとんどはGitとして、一部はHTTPとして取得されています。 ビルドスクリプトのクローン/ダウンロード&は、必要なライブラリを抽出します(ローカルビルドの場合はdevシステムと同様です)。私の関心事は、CodeBuildが繰り返し第三者からクローン/ダウンロードを繰り返しているということです。私のコストや帯域幅は心配していませんが、より多くの人がサードパーティライブラリに依存するにつれて、帯域幅/コストが大幅に増加します。私はそれを避けたいです。CIビルドでサードパーティのgit repoを繰り返し複製することを避ける方法

  1. これは問題なのですか、あまりにも慎重ですか?
  2. サードパーティのライブラリを繰り返し取得するのを避けるために、どのような方法がありますか?

私たちは現在gitサブモジュールを使用していませんが、何も変わらないと思います。

git clone --depth 1 --shallow-submodulesを使用すると、サードパーティのリポジトリの負荷を軽減できます。

私の最善の解決策は、すべてのビルドの最後にサードパーティのライブラリをパッケージ化してS3に保存し、その次のビルドを取り出して抽出し、git pullを実行してアップデートをチェックすることです。

私たちのプロジェクトビルドで使用するライブラリのローカルコピーを更新する独立したビルドシステムを使用することは、より洗練されていませんが、これにより、サードパーティのパッケージがビルドプロセスから汚染されることはありません。

もっと簡単なオプションはありますか?

+0

依存関係のコピーを事前ビルド/キャッシュする独立したビルドシステムは、実際には長期的にはあなたにとってはより良いものになります。 (1)最新のバージョンが壊れている場合は依存関係をブロックし、(2)サードパーティのリポジトリがオフラインであってもコピーを作成し、(3)これまでに構築した依存関係のどのコミットを正確に判断する必要がありますか?ライセンスの変更の場合は、 – Unsigned

答えて

0

git clone --depth 1 --shallow-submodulesを使用すると、サードパーティのリポジトリの負荷を軽減できます。

また、Gitのサブモジュールを使用すると、サブモジュールは、回更新Gitのclneをやっているので、あなたはgitのクローンで使用するのと同じサブモジュール のコミットのみ、最新のをつかむことができます。

サブモジュールに渡すことができる--depthフラグがあります。
--depthフラグは、リポジトリを複製するときと同じ方法で使用することができ、最新のコミットのみを複製したい場合に使用します。

--depthオプションを追加および更新コマンドgit submoduleに追加します。このコマンドは、次に、cloneコマンドに渡されます。
サブモジュールが巨大で、最新コミット以外のものに本当に興味がないときに便利です。

git submodule add --depth 1 -- <url> 
git submodule update --depth -- <url> 

完全なドキュメントはhereを見つけることができます。

関連する問題