この記事は 『CRESCO Advent Calendar 2018』 16日目の記事です。

 

元エンベデッドシステム開発エンジニアのいとけんです。
エンベデッドシステム開発の現場では、Windowsネイティブアプリを使って解析したりテストしたりすることが多いので、CIツールとRPAツールを連携して自動化してみました。

Windowsネイティブアプリを動かしたいので、環境はWindows OSが前提です。
CIツールはJenkinsを、RPAツールはUiPathを使っています。UiPathを使った理由は…察してください。。。
環境:
Windows 10 Enterprise
Windows版Jenkins
UiPath community edition

で、ふつうに(インストーラに従って)インストールして、JenkinsのJob作って動かしてみたところ、

メッセージを受信できる net.pipe://localhost/UiPath/service/duplex/agent/SYSTEM でリッスンしているエンドポイントがありませんでした。これは一般に、アドレスまたは SOAP アクションが正しくない場合に発生します。詳細については、InnerException を参照してください (ある場合)。

と言われててしまい、うまく UiPath Robot が起動しません。それを回避する方法をまとめました。

この記事でやること。
・UiPathを、Windowsバッチファイルから起動する
・UiPathを、タスクスケジューラから起動する(おまけ)
・UiPathを、Jenkinsから起動する(本題)

UiPathを、Windowsバッチファイルから起動する

まず前提として、UiPathをUiPath Studioを使わずに起動する方法です。

これはすごく簡単で、UiPath Robot に UiPath のプロジェクトファイルのPathを引数に与えるだけです。

バッチファイルの中身はこんな感じです。
1行目はUiPath RobotへのPathに、2行目はプロジェクトファイルへのPathに置き換えてください。

set UiRobot=C:\Users\(ユーザー名)\AppData\Local\UiPath\app-(バージョン)\UiRobot.exe
set Scenario=C:\(プロジェクトファイルのフォルダ)\(プロジェクトファイル名).xaml
%UiRobot% -file:%Scenario%

これをダブルクリックすれば、作ったプロジェクトが動作するはずです。これで、UiPath Studioを起動しなくても任意のタイミングで、実行できるようになりました。

UiPathはバージョンごとにインストールフォルダが作られます。
UiPath Studioを起動したときにバージョンアップするか聞かれますが、うっかりバージョンアップすると、ある日突然バッチファイルが動かなくなることがあるのでご注意を。

UiPathを、Windowsタスクスケジューラから起動する

Windows タスクスケジューラに、先ほど作成したバッチファイルを登録すればOKです。

まず、『コントロールパネル>システムとセキュリティ>管理ツール>タスクのスケジュール』を選択します。

タスクスケジューラを起動したら、『操作>タスクの作成』を選択します。

適当に名前を入れたら、『トリガー』タブを選んで『新規』を押します。トリガーを適当に設定したら『OK』を押して戻ります。

『操作』タブを選んで『新規』を押し『プログラム/スクリプト』の『参照』から、先ほど作ったバッチファイルを選択し、『OK』を押して戻ります。

最後にタスクの生成画面もOKを押して閉じて、タスクスケジューラのメイン画面から右クリックして『実行する』を選択します。

これで、タスクスケジューラからも、実行できるようになりました。定時処理とか、夜間バッチとかであれば、これでいけると思います。

UiPathを、Jenkinsから起動する

さて、ここからが本題ですね。

冒頭でも書きましたが、ふつうに(インストーラに従って)インストールしてJenkinsのJob作って動かすと、net.pipeのエラーが出てしまいます。
ネットでいろいろ探していたところ、サービス起動したJenkinsからはネットに繋がらないような記載を見つけました。

サービス起動したJenkins…

サービス起動じゃなきゃ良いの?!

と思って、WindowsサービスからJenkinsを止めて手動で起動したところ上手く行きましたとさ。

WindowsサービスからJenkinsを停止する

『コントロールパネル>システムとセキュリティ>管理ツール>サービス』を選択します。

『Jenkins』を選択して『サービスの停止』を押すだけです。

手動でJenkinsを起動する

コマンドプロンプトを管理者権限で起動して、Jenkinsのインストールフォルダに移動、warを起動するだけです。

cd "c:\Program Files (x86)\Jenkins"
java -jar jenkins.war

“Jenkins is fully up and running”と出たら正常に起動しています。
# jenkinsのインストールフォルダ、c:\Jenkinsとかにしておけば良かった。。。orz

JenkinsのJobを作成する

初めて手動でJenkinsを立ち上げると、初期設定からやり直しです。こちらはネットに落ちてるインストール手順を参考にしてください。
ここでは、UiPathを動かすためだけに作成したJobの設定のみ記載します。

 

まず、『新規ジョブ作成』を選んで、『Enter an item name』に適当な名前を付け『フリースタイル・プロジェクトのビルド』を選択して、『OK』を押します。

するとプロジェクトが出来上がるので、『ビルド』タブを選択し『ビルド手順の追加』プルダウンメニューから『Windowsバッチコマンドの実行』を選択します。

『コマンド』に、バッチファイルへのPathと実行コマンドを記載して保存したら、設定完了です。

これで、今作成したプロジェクトを実行するとJenkins から UiPath が起動できるようになったかと思います。
あとは、ポーリング設定してgitのpushを検出するなりして、任意のタイミングで動作するようにすればOKです。

さいごに

この方法だとWindows再起動後に毎回、WindowsのサービスからJenkinsを停止して手動で立ち上げないといけません。
これは面倒なので、時間があったらWindowsサービスのまま使える方法も探ってみようと思います。