Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

イントロ

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

Vagrant_Docker_jenkins.png

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

Jenkins側の設定

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

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

として「OK」を押下
01.png

つぎの設定画面では

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

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

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

WindowsPC側の設定

Jenkinsサーバへ接続

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

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

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

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

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

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のこと) にすること

などなどです。
06.png

実行します。

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

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

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

UiPath Studioでワークフロー作成

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

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

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

Jenkinsのジョブを作成

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

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

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

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

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

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

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

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

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

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

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

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

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

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

まとめ

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

おつかれさまでした。

関連リンク

masatomix
JavaEEの開発やリッチクライアント開発のアーキテクトが専門でしたが、最近はRPAとAIがメイン。。。RPAはUiPathとOrchestratorの構築が中心です。 FirebaseとかOAuth/OIDCなど新しいモノ、あと数学もすき。 最近は UiPath Friends っていうユーザコミュニティにも関わってます。 あ、UiPath Japan MVP 2019,2020 す。
primebrains
プライム・ブレインズは、マネジメントスキルだけでなく、最新のITスキルを兼ね備えた技術者がお客様の立場でお客様と共に、成功に向けてプロジェクトを推進します。
http://www.primebrains.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away