完璧な継続的インテグレーション環境のためにVagrantとJenkinsを組み合わせる方法は?


86

実行するSW要件がいくつかあるプロジェクトがあります(たとえば、Apacheの特定のバージョン、PHPのバージョン、MySQLデータベースのインスタンス、およびその他のいくつかのソフトウェア)。

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

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

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

これを実現するために、環境をどのように設定しますか?


4
さらに、JenkinsのセットアップはVagrantボックスであるため、複数のプラットフォーム間で多くの違いがあるため、このCI環境を複数のプラットフォームで実行できます。
Stephan Eggermont 2011

1
そのような環境を作りましたか?DockerとJenkinsの組み合わせはすでによく知られていますが、Windows環境では十分ではありません。その場合、唯一の適切なオプションであるIMOはVagrant + Jenkinsです。考慮すべきいくつかの側面があります。たとえば、本当にスレーブが必要なのか、どのようなコンテキストで、または単一のサーバーを使用して、オンデマンドでプロジェクトごとにvagrantビルド環境を作成できますか(多くの企業では、常にビルドしているプロジェクトはほとんどなく、大部分はビルドされません)、または、これを重複排除システムの上で使用して、ディスクのフットプリントを削減する必要があります。
majkinetor 2014年

回答:


36

それはビルドシステムにとって良い解決策です、私の提案:

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

おそらく、その場でvagrantboxを作成できるveeweeを見ることができます。

ここでジェンキンスCIとベイグラントとメイクのCI簡単にこの提案のための私のガイドラインについて。


1
あなたのリンクは、残念ながら壊れている
gogo_gorilla

3
場合には、誰かがリンク切れに興味を持っている、ここでのコピーであるジェンキンスCIとベイグラント付きやすくするのCI
ジルベルトトレビノ

12

現在JenkinsCD1.532.3をサポートしているJenkinsVagrantプラグインを試すことができます

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


7
このプラグインは1.490を超えるJenkinsをサポートしていないため、大きな制限があります:-(
kenyee 2014年

奴隷で走っている放浪者もサポートしていません:(
Christophe Furmaniak 2014

1
はい。ただし、VMのすべてのライフサイクルを自分で処理する必要があります(ジョブの終了時に作成、破棄するかどうかなど)。プラグインの背後にある考え方は、プラグインがそれを実行し、VMを分離されたコンテナーとして使用するという主な目的に集中できるということです。
Christophe Furmaniak 2014

2
上記のプラグインには、まだ修正されていない厄介な問題があり(issues.jenkins-ci.org/browse/JENKINS-26326)、開発は1年前に停止されました。お勧めしません。
ロスIvantsiv 2015

1
ビルドを実行するためにオンデマンドでvagrantインスタンスを実行することは、正しいことのように思えます。このプラグインがまだ機能しない場合は?
atifm 2016年

1

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

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

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


質問があれば、jenkinsを別のユーザーとして実行しましたか?もしそうなら、どのようにしてvagrantへのアクセスを提供することができましたか?ありがとう
Jaswanth Manigundan 2017年

vagrantが正常にインストールされている限り、システムパスに配置されます。ボックス自体は通常、現在のユーザーのホームディレクトリにロードされますが、環境変数を使用して放浪者のホームを上書きできます。これらすべてに加えて、ボックスプルをビルドプロセスの特定のバージョン部分と組み合わせて、一度キャッシュしてから再利用できるようにしました。
dragon788 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.