2016-05-19 6 views
3

私は現在、私のアプリケーションをテスト/展開するためにdocker + travis CIを使用しています。これはnode_modulesなどのデータボリュームがあり、ドッカーのレイヤーがキャッシュを高速化してビルドを行うため、ローカルで素晴らしい動作をします。ドッカーを使用している場合、CI構築時間を短縮するにはどうすればよいですか?

しかし、私がトラビスにコードをプッシュすると、最初からすべてを再構築してインストールする必要があり、それは永遠にかかります! Travisは、ドッキング・レイヤーのキャッシュをサポートしていません。私のビルドをスピードアップするための他の方法や、ドッカーレイヤのキャッシュを可能にする別の同様のツールがありますか?

答えて

2

i3wmが同様の問題をどのように解決したかを調査したい場合があります。

主な開発者はdesign behind his Travis CI workflowに書いてあります。関連部分を引用:

基本的な考え方は、Debianのテスト に基づいてドッカーコンテナを構築し、そのコンテナ内のすべてのビルド/テストコマンドを実行することです。私たちの Dockerfile、コンパイラ、フォーマッタや他の開発ツール 最初にインストールした後、我々はトラヴィスのためとDebianのため 依存関係を構築複製する必要がないように、 debian/controlファイルに基づいて、I3の依存関係を構築し、すべてインストールされます。

これがうまくすぐに問題を解決するが、重要な コストがかかります:ドッカーコンテナを構築するにはトラヴィスの実行にウォールクロック時間 のかなりを追加し、我々は我々の貢献者に迅速なフィードバックを与えたいです。 長いビルド時の解決策はキャッシングです。 DockerコンテナをDocker Hubにアップロードし、その後のビルドで キャッシュバージョンを使用するだけです。

私たちは月の、または ビルド環境(現在Dockerfiledebian/control) の変化への入力までコンテナをキャッシュすることを決めました。技術的には、 入力ファイルのSHA-256ハッシュを出力するha.sh(get it?hash!)という小さなシェルスクリプトによって実装されています。当月に追加されたこのハッシュは、Dockerコンテナのタグとして を使用しています。 2016-03-3d453fe1

すべてのプラグイン方法については、.travis.ymlを参照してください。

関連する問題