Vagrant環境のDockerでJenkinsサーバを構築し、スレーブのWindowsマシンを接続する(後半)


イントロ

前回の記事のつづきです。Jenkinsサーバを構築したのち スレーブとなるWindowsPCをそのJenkinsにぶらさげて、JenkinsからそのWindowsマシンに何か処理をさせてみようというはなしでした。

ちなみにこのあとの作業は、今回構築したJenkinsでも、ご自身で別途用意したJenkinsでもどちらでもかまいません。適宜Jenkinsをご用意ください。

Jenkins側の設定

まずはJenkins側の設定から。任意の端末からブラウザでJenkinsにアクセス(http://[vagrantが動いているマシンのIP]:8888/jenkins/)し、

  • Jenkinsの管理 >> ノードの管理 >> 新規ノード作成 と遷移、「ノード名」を 「windows-slave」

として「OK」を押下

つぎの設定画面では

  • リモートFSルート は、WindowsPC側のjarファイルなどが展開されるディレクトリで、とりあえず「c:/temp/」としました。もちろん、WindowsPC側に存在するパスを指定してください。
  • 起動方法は「Launch agent by connecting it to the master」

最後に「保存」をクリック。

保存されました。が、まだWindowsPCから接続していないので、アイコンには×がついている状態です。

WindowsPC側の設定

Jenkinsサーバへ接続

つづいてスレーブにしたい WindowsPCで操作します。ブラウザでJenkinsにアクセス(http://[vagrantが動いているマシンのIP]:8888/jenkins/)し、Jenkinsの管理 >> ノードの管理 >> 「windows-slave」 へ遷移。

かつては下記の画面上の「Launch」アイコンのクリックでおしまい、だったのですが、セキュリティ上どうも動かないこともあるようなので、もう初めから手動でいきます。

少し下の agent.jar へのリンクがあるのでクリックしてダウンロードします。

今回は、最終的にjarは「c:/temp」においておきました。

さて画面をよく読むと、画面上に表示されている、

java -jar agent.jar -jnlpUrl http://localhost:8888/jenkins/computer/windows-slave/slave-agent.jnlp 
-secret 0d2612f004fbbeab7a0e18cf48def8475f7cdf5eebf1a2a8a29e9e5ee66723d8 
-workDir "c:/temp/"

をコマンドプロンプトから実行することで、WindowsPCからJenkinsサーバへ接続をしにいくみたいなので、さっそく上記を実行します。注意点は

  • コマンドプロンプトを管理者権限で開くこと
  • agent.jarを置いたディレクトリ c:/temp で実行すること
  • URLを localhostではなく、WindowsPCから見たときのJenkinsサーバのIP(ようするにブラウザバーに表示されているIPのこと) にすること

などなどです。

実行します。

Microsoft Windows [Version 10.0.17763.615]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>cd c:\temp

c:\Temp>java -jar agent.jar -jnlpUrl http://192.168.2.205:8888/jenkins/computer/windows-slave/slave-agent.jnlp -secret 0d2612f004fbbeab7a0e18cf48def8475f7cdf5eebf1a2a8a29e9e5ee66723d8 -workDir "c:/temp/"

... 割愛
情報: Trying protocol: JNLP4-connect
7 29, 2019 11:05:03 午前 hudson.remoting.jnlp.Main$CuiListener status
7 29, 2019 11:05:07 午前 hudson.remoting.jnlp.Main$CuiListener status
情報: Connected

接続出来たようですね。。ブラウザをリロードしてみると、、

確かにWindowsPCから接続が出来ているようです。

UiPath Studioでワークフロー作成

そういえば、Jenkinsから実行する Hello Worldなワークフローを UiPath Studioで作っておきましょう。

Publishして一度実行することで、
%userprofile%\.nuget\packages\HelloWorld2019\1.0.7149.20355\lib\net45
などに project.jsonなどが配置されることを確認しておきます。

スレーブのWindowsPC側の準備は完了です。

Jenkinsのジョブを作成

さて、UiPathのワークフローを実行するためのJenkinsのジョブを作成します。
任意の端末で Jenkinsを開き、「新規ジョブ作成」を選択

名前を「UiPathTest」として「フリースタイル・プロジェクトのビルド」を選択し「OK」をクリック。

設定画面では、一番上の General にある「実行するノードを制限」のラベルに、先ほど設定したWindowsPCのノード名「windows-slave」を指定しておきます。Jenkinsは通常ジョブをマスター(このLinux上のJenkinsサーバ)で実行するので、それをスレーブのWindowsPC実行に制限するための設定です。

さてずーと下に行って「ビルド手順の追加」プルダウンから、Windowsバッチコマンドの実行 を選び、、

コマンドのテキストエリアに

"c:\Program Files (x86)\UiPath\Studio\UiRobot.exe"  -file "%userprofile%\.nuget\packages\HelloWorld2019\1.0.7149.20355\lib\net45\project.json"

と入れて、保存をクリックします。

さてJenkinsのジョブを実行します。左のメニューの「ビルド実行」をクリックします。

処理が開始されたようなので、、、

スレーブのWindowsPCを見てみましょう。。

おお、WindowsPCで UiPath のワークフローが実行されました!MessageBoxをとじてワークフローは終了させておきましょう。

Jenkins側のログを確認しておきます。下記の通りビルド履歴のプルダウンから、コンソール出力を選択します。

今回の実行で処理されたログが表示されています。

JenkinsからUiPath Robotの操作ができることが確認出来ましたね!

まとめ

  • 特定のアカウントでログイン済みのWindowsをJenkinsのスレーブとして設定することで、JenkinsからUiPath Robotのワークフローを実行することができそう
  • ただスケジュール実行などはライセンス規約上許可されていないので要注意
  • OrchestratorのUnattended RoboはWindowsにログインしてない状態でもワークフローを実行できて使い勝手がよい
  • 当然ですが Orchestratorが持っているようなワークフローの配布、野良ロボの統率などの機能はない

おつかれさまでした。

関連リンク