2013-01-31 15 views
6

ユーザがスレーブの使用を開始したときにJenkinsをオフラインに設定する方法はありますか?ユーザがWindowsにログインしたときにjenkinsスレーブをオフラインにする

EDIT:私は平均的なユーザーログを使用して開始します。

+0

私はあなたが "スレーブを使用して開始"を定義する必要があると思います:ユーザーがログインしたことを意味しますか?マウスを動かした? CPU使用率が増加しましたか? – Slav

答えて

1

可能な解決策の1つは、Slave Prerequisites Pluginです。 これは、スクリプトの面で仕事の前提条件を追加することができます:ジョブはその上で実行することができます前に、スレーブノード上で実行するスクリプトを設定し

。 0以外の状態を返すと、ノードはジョブ の実行を拒否され、別のノードが選択されます。 は、利用可能なノードが の前提条件と一致するのを待って、ビルドキューに戻ります。次のWindowsバッチスクリプトで

python.exe -c "import psutil; assert len(psutil.get_users())==0" 

あなたはpsutilを取得する必要がありますが、あなたは純粋なWindowsのシェルで何かを作ることができるかもしれません。最も明白な欠点は、利用可能とマークされたものを使用するのではなく、多くのシステムを通過することです。

+1

もっとJenkins私の答えよりもネイティブの解決策。 +1 – VonC

1

Jenkins slave can be registered as a Windows service以降、1つの方法は、現在ログオンしているユーザーがいないことです。

一つは、ユーザーがログオンしているかどうかを確認思われる、regularely実行し、Windowsタスクを思い付くことができ、そして:

  • 1が存在する場合、サービスを停止します。
  • もしそうでなければ、同じJenkinsスレーブエージェントのWindowsサービスを(再)開始します。

誰がログオンしているかを確認するには、「From WindowsService how can I find currently logged in user from C#?」を参照してください。

+0

これには、別のポーリングタスクが実行されている必要があります。ログオンしているユーザーがいるかどうかをアサートして、各タスクを開始することもできます。私は、https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds#Distributedbuilds-Nodemonitoring – Oleksiy

+0

のようなノード上にモニターを追加するプラグインの点でもっと考えていました@Oleksiyは、ノードモニターがhttpを実行するようにしました://social.technet.microsoft.com/Forums/en/ITCG/thread/701515b3-9af3-49f4-b624-09a083cbed6bまたはhttp://technet.microsoft.com/en-us/sysinternals/bb897545 – VonC

関連する問題