JenkinsノードとしてのDockerコンテナーの使用

この記事では、Dockerコンテナーを継続的統合システム(この場合はjenkins)の個別のノードとして使用する方法について説明します。 tlを読むのが面倒です。 博士

RPMおよびDEBパッケージでプロジェクトをビルドするには、Jenkinsを使用します。Jenkinsには特別なマシンが割り当てられています。



最初は、CentOS 6のみのプロジェクトをビルドしました。次に、CentOS 5のサポートが追加されました。特定のバージョンのライブラリによっては、同じバイナリがCentOSの異なるバージョンで動作しないため、異なるRPMをビルドする必要がありました。 これは、CentOS 5ノードをVirtualBox仮想マシンで使用されるjenkinsに追加することで決定されました。 次に、Suse、Debianのサポートを追加しました。



RAMの量はゴムではなく、アセンブリのみに仮想マシンを使用することは明らかなオーバーヘッドであり、 Dockerを使用してスクリプトを書き換えることが決定されました。





Jenkinsを使用して継続的な統合を行うと、ノードを必要なオペレーティングシステムに接続してタスクを割り当てることができます。いくつかのオプションがあります。



この場合、コンテナの仮想マシンに対する利点は明らかです(RAMは共有され、動的に変化し、仮想マシンとは異なり、多数のコンテナが発生してもシステムが遅くなることはありません)。







ジェンキンスノードとしてのDocker





ジェンキンスの奴隷には次のものが必要です。

  1. Java
  2. エントリポイント-ssh
  3. 組み立てツール




エントリポイントは、Dockerでプロセスを開始し、アセンブリセッション内でファイルシステムを保存するために必要です(LXCはinitプロセスを使用しますが、システム全体は役に立ちません)。 jenkinsは引き続きノードと通信するためにSSHを必要とするため、このデーモンがエントリポイントになります。



Dockerは、マシンを構築するために、マシンアセンブリ命令でDockerfileファイルを使用することを推奨しています。



このリポジトリ: https : //github.com/antigluk/docker-jenkins-slaveビルドルールが利用可能になりました



新しいシステムでのプルリクエストとスクリプトの修正は大歓迎です:)



組み立てと使用





DockerとJenkinsがインストールされていることを前提としています



1)JenkinsにSwarmプラグインをインストールします(APIを使用してスレーブをJenkinsに自動的に追加できます)

 2)$ git clone git@github.com:antigluk / docker-jenkins-slave.git;  cd docker-jenkins-slave
 3)目的のシステムのルールフォルダーに移動します。
     $ cd centos6
 4)$ sudo bash build.sh




イメージを組み立てたら、このタイプのノードを好きなだけ追加できます。



     sudo bash add_slave.sh SlaveName




このコマンドを実行すると、Jenkins-eに新しいノードが表示されます。



これで、新しいノードを使用するには、目的のタスクをアセンブルするためのタグに「docker-tagname」を指定するだけで十分です。タグ名はフルバージョンのシステムの名前です。タグのリストは、wikiの特別ページで表示できます



All Articles