Jenkins Master/Slaveアーキテクチャ


一Jenkins Master/Slaveアーキテクチャ
 
 
マスター/SlaveはServerとagentの概念に相当します。マスターはウェブインターフェースを提供して、ユーザーにjobとslaaveを管理させます。jobはマスターマシンで実行したり、slaaveに割り当てられて実行します。一つのマスターは、異なるjobまたは同じjobの異なる構成のために複数のslaaveを関連付けることができる。
 
 
 
 
jobがslaaveに割り当てられて実行されるとき、masterとslaaveは実は双方向のバイトストリームの接続であり、接続方法は主に以下の通りである。
 
1)マスターがsshでslaaveを起動する。
Jenkinsにはsshクライアントが内蔵されており、リモートのsshdと通信することでslaave agentを起動することができます。これは***unixシステムのslaaveにとって最も便利な方法です。***unixシステムは一般的にデフォルトでsshdがインストールされています。ssh接続のslaaveを作成するには、slaaveのhost名前とユーザ名とssh証明書が必要です。public/prvate keysを作成して、public keyをslaaveの~/.ssh/authorized_にコピーします。keysでは、prvate keyをマスターにあるppkファイルに保存します。junnkinsは自動的に他の構成作業を完成します。例えば、copy slavie agentのbinaryはslaaveを起動して停止します。しかし、あなたのjobは他のプロジェクトに依存しています。自分で設定してください。
 
 
2)マスターはWMI+DCOMでWindows slaaveを起動します。
WindowsのSlaveに対して、JenkinsはWindows 2000及び今後内蔵する遠隔管理機能(WMI+DCOM)を使用して、slaveに管理者アクセス権限があるユーザー名とパスワードを提供するだけで、jenkinsは遠隔的にwindows serviceを作成してから遠隔的に起動して停止します。
 
これはwindowsのシステムにとって最も便利な方法ですが、この方法は相互作用を示すGUIプログラムを実行することができません。
 
注意:他のタイプのリンクはしたくないです。この方式はslaveeの名前がとても重要で、slaveeのアドレスとしてslaveeにアクセスします。
 
 
3)自分のシナリオを実現してslaaveを起動する。
上のセットの方法が足りないなら、自分のシナリオを実現してslaaveを起動することができます。起動スクリプトをマスターに置いて、必要な時にこのスクリプトを呼び出してslaaveを起動する必要があります。
 
典型的には、あなたのスクリプトは、SSH、RSH、または同様の方法(windowsでは、cygwinまたはpspexecによって達成できます)のようなリモートプログラムを使用して実行されます。
スクリプトの最後に、Java-jar slaave.jarと同様にslaaveを起動する必要があります。slaave.jarはhttp://yourjenkinsserver:port/jnlpjars/slave.jarダウンロードは、このslaave.jarを台本の最初にダウンロードして、slaave.jarの正しいバージョンを保証することもできます。このpluginは、ssh slavie pluginを使用すると自動的にslavie.jarを更新します。
 
 
4)Java web startでslaaveを起動する。
jave web start(jnlp)は、他の方法でslaaveを起動します。この方法でslaaveにログインしてブラウザを開いてslaaveの設定ページを開いて接続してください。また、Windows serviceとしてインストールして、slaaveをバックグラウンドで動作させることもできます。
 
もしあなたが実行するプログラムがUIのインタラクションを必要とするなら、以下の方法を使います。slaaveシステム上でjunnkinsユーザを作成し、自動ログインを設定して、システムのstartup itemsでslaave JNLPファイルのショートカットを追加して、slaaveがシステム登録時に自動的に起動します。
 
 
5)直接slaaveを起動する
この方法はjavaウェブstartと似ています。簡単に***unixシステムでslaaveをdaemenとして実行できます。slaaveをJNLPタイプに接続して、slaaveマシンで実行する必要があります。

java -jar slave.jar -jnlpUrl http://yourserver:port/computer/slave-name/slave-agent.jnlp

Slave

*   slave    jenkins,          UID GID,  slave       ;

*      jenkins   home     /home/jenkins,                ;

*    slave  sshd,windows  cygwin sshd;

*    slave  ntp client,      ntp server  ;

*     sh      slave   ,    jenkins  ,  sshd,  java,ant,maven ;

*        slave,  slave           :

#!/bin/bash JAVA_HOME=/opt/SUN/jdk1.6.0_04 PATH=$PATH:$JAVA_HOME/bin export PATH java -jar /var/jenkins/bin/slave.jar