web-dev-qa-db-ja.com

VagrantとJenkinsを組み合わせて完璧な継続的統合環境を実現するにはどうすればよいですか?

実行するSW要件をいくつか持っているプロジェクトがある(例:特定のバージョンのApache、PHPのバージョン、MySQLデータベースのインスタンス、および他のいくつかのソフトウェア)。

すでに Vagrant を発見しているので、仮想環境はすべてセットアップされています。設定ファイルとクックブックからボックスを作成できます。

また、 Jenkins などの継続的インテグレーションシステムの利点も理解しています。

次に、これら2つの世界(VagrantとJenkins)を組み合わせて、完全な継続的統合環境を取得します。具体的には、プロジェクトに必要なSWをJenkinsを実行しているマシンにインストールしたくないが、Vagrantが提供する仮想環境を使用して、プロジェクトをその上に定期的にビルドしたい。 CIソフトウェア(Jenkins)は、Vagrantボックスをビルドし、その上でプロジェクトをビルドおよびテストします。

これを実現するために、どのように環境をセットアップしますか?

83
Roberto Aloi

それはビルドシステムのための良いソリューションです、私の提案:

  1. 現在のジェンキンはマスターCIとして機能します(おそらくユーザージェンキンによって開始されます)
  2. 同じマシンまたは別のマシンで別のユーザーを作成して、ジェンキンススレーブモードとして動作します
    • jenkinsスレーブはjenkinsマスターから呼び出すことができ、vagrantの許可と環境を持っていたvagrantのような別のユーザーを使用できるため、元のjenkinsマスターサーバーに干渉しません
    • 基本の迷走ボックスを作成し、それを再利用して展開を高速化できます
  3. ほとんどのインストール情報(パッケージ)をpuppet(またはchef)で管理して、vmボックスにロードできます。

おそらく veewee を見ることができます。これにより、オンザフライで浮浪者ボックスを作成できます。

Jenkins CIとVagrantでCIを簡単にする この提案のガイドラインです。

33
Larry Cai

現在、Jenkins CD 1.532.3をサポートしている Venrant Plugin for Jenkins を試すことができます。

http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html で実行されているこのプラグインのデモを見ることができます

12

個人的には、Hashicorp Packerを使用して開発者向けのVagrantボックスを作成し、それを使用して、CIシステムで実行できるDockerまたはAWSまたはOpenStackイメージを出力することをお勧めします。 Vagrantは素晴らしいツールですが、VMのオーバーヘッドは、特に高速のフィードバックが必要な場合、CIシステムが絶えず上下させるために少し高くなる可能性があります。

以前のクライアントでは、基本的にシステムでVagrantマシンを一度起動し、それらのVM内でDocker/virtualenvビルドを実行し、メジャーアップグレードまたは環境が正しく動作しないという問題が発生したときに定期的にそれらを破棄しました。

https://www.packer.io/docs/builders/openstack.html

1
dragon788