2016-04-29 22 views
2

Dockerを使用したJenkins CI/CDインフラストラクチャでのコンテナ化のための最良の戦略を理解することは大変です。私が見るものから、私は2つのオプションがあります:https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin ビルドが完了すると、スレーブが配置されます。Dockerプラグインを使用して、Dockerホストでオンデマンドでプロビジョニングされるエフェメラルスレーブを使用します:https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin その結果、1つのスレーブで1つのビルドしか実行されません。その結果、(単離された)複数の単一のスレーブ上で実行することができ構築ようhttps://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Docker+Custom+Build+Environment+PluginDockerizing Jenkinsはスレーブをコンテナとして構築するか、コンテナとして構築しますか?

(2)静的がCloudBeesのドッカーカスタム環境プラグインをビルド使用ドッカーコンテナ内部ビルド実行スレーブ(例えばVM)を使用します。

一方のアプローチのメリットとデメリットは何ですか?いつ他のものを選ぶべきなのですか?これは私には明らかではありません。各ジェンキンススレーブは、少なくとも2を負担 - (2)よりスケーラブルになり実行している多く仕事を持つ大規模なエンド・ツー・エンドのパイプラインのオーケストレーションCI/CDインフラストラクチャのように、私はビルドを疑う

は、奴隷その軽量化されていますマスターノード上のスレッド。

編集

答えて

1

私の好みはDocker pluginとオプション1(はかない奴隷)です。このプラグインで

、あなたがあなたのドッカー画像にラベルに影響を与えることができ、グローバルジェンキンス設定でビルドイメージを宣言します。あなたの仕事で

enter image description here

を、あなただけの、関連するラベルを使用する必要があり、 Dockerプラグインは関連するスレーブを新しいコンテナに作成します。

Dockerプラグインを使用すると、Jenkinsは数秒で新しいスレーブをスピンアップします。したがって、多くの段階でパイプラインを使用していても、正常に動作します。

これは私がForgerock(私の会社)で実装するつもりです:(SSDで、32個のコアとRAMの1 TB)

  • 2強力なベアメタル・マシン
  • ジェンキンスDocker plugin
  • (インターネットをダウンロードしないように)Artifactoryを使用してキャッシュ
  • Mavenのアーティファクト
  • ドッキングウィンドウコンテナは、ローカルMavenのキャッシュを使用します(私は古い/奇数のMavenアーティファクトを使用しないようにしてくださいね)

私は小さなベアメタルマシン上でPOCを行なったし、それがうまく機能:)

あなたはMavenのキャッシングなしではかない奴隷を使用している場合、それは、パフォーマンスに関する問題になることができます。

Jenkinsプラグインについては、Nicolas De Loofが開発した新しいプラグインがあります。Docker Slaves plugin

私はこの新しいプラグインを試してみる必要があります。

+0

オプション(2)も新鮮な環境を保証しませんか? – Boon

+0

それはそうだ:) 私は私の答えを更新します。 –