UiPath Automation Ops-パイプラインでRPAもCI/CD導入の時代に？RPA運用自動化にフォーカスしてガイドします

# はじめに

UiPath Automation Cloudで、新しい機能「UiPath Automation Ops-パイプライン」が正式リリースされたので、ブログを書くことにしました。運用面でも、どんどん高機能化（高度化？）が進んでますw

Automation Opsのパイプラインは、開発と運用を組み合わせ、開発者の生産性と運用の信頼性がともに最適化された開発手法「DevOps」が根底にありますが、難しいことはさて置き、もっと身近な物として、RPA保守運用の課題解決の一端を担う形で自動化すると言った観点で執筆しました。

**:frowning2:RPA保守運用の課題**:frowning2:

1. RPAの全社展開で保守運用の負担が増え続ける課題
2. 改修して緊急リリースする際のスピードの課題
3. 保守運用を手順化していても人的ミスが発生してしまう課題

**:grinning:RPA運用を自動化するメリット:grinning:**

1. 負担軽減
1. スピードアップ
1. 信頼性の向上

本ブログではUiPath Automation Ops-パイプラインを利用するための基礎的な手順をステップバイステップで説明してます。尚、UiPath Automation Ops-パイプラインのドキュメントポータルは下記のサイトです。

https://docs.uipath.com/ja/automation-ops/automation-cloud/latest/user-guide/about-automation-ops---pipelines

# Automation Ops-パイプランを利用した自動化例
下記は既定で定義済みパイプラインプロセス「Build.and.promote.with.approval」を選択した時の一例です。

❶パイプラインプロセス「Build.and.promote.with.approval」の自動化の流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/bfa8ae50-657d-7e56-5368-af6361a9c149.png)


❷パイプラインプロセス「Build.and.promote.with.approval」の構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/3e685183-c8af-7a44-b745-480946365fda.png)

❸Automation Ops-パイプランで表示されるステータス

<iframe width="560" height="315" src="https://www.youtube.com/embed/hLl5EDd3nZ0?si=wQbvAiy4W1JzPENe" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

これ以外にも既定で定義済みのパイプラインプロセスが提供されており、またユーザー自身で独自のパイプラインプロセスを開発することもできます。

::: note info
**補足** 
ちなみに今まで同様のCI/CDパイプラインを実現するためには、サードパーティ製品（JenkinsプラグインまたはAzure DevOps拡張機能を利用）を導入する必要がありました。Automation Cloudにパイプライン機能が取り込まれ、パイプラインのプロセスもUiPathのワークフローで開発出来ることになったことから、UiPathワンストップで実現できる様になり、導入のハードルが低くなったと言えます。ただし、ソース管理ツールとの接続は現時点ではGitHub、Azure Repos(2024年3月時点ではプレビュー)のみとなっています。
:::

::: note warn
**注意**
対象のプロジェクトがWindowsレガシーの場合は、分析でエラーが発生します。Windowsレガシーは非推奨のため、今後、対応されるかは微妙なところです。
:::

# 前提
本ブログはGitHubと接続した場合の手順として記載しています。また、GitHubとUiPath Studioとの接続方法、利用方法はUiPathの基礎知識なので、本ブログではAutomation Ops-パイプライン特有部分の解説に絞ります。

# 1.GitHub接続
まずは、セットアップから始めます。Automation OpsからGitHubへの接続設定を行います。

❶Automation Cloudポータル>Automatioin Ops
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/6d76f707-5aed-89f5-4ba5-9dba23a367bc.png)

❷パイプライン>開始
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/44a0b54c-05b4-6d14-846e-121876a02ba7.png)

❸パイプラインプロセスを構築するOrchestratorのテナント名を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/519340d6-070a-3a3f-f814-f5e223eb34b1.png)

❹パイプラインプロセスを実行するマシンを選びます。「マシンを手動で選択」を選ぶと作成済みのマシンテンプレートから選択できる様になります。「サーバーレス」を選ぶと新しいサーバーレスマシンテンプレート「Pipelines serverless machine」が自動的に作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/565e6277-a664-7225-2233-7d396576f9e3.png)

:::note warn
**サーバーレスを利用する場合の注意点**
1. 共有オートメーションを実行するためのロボット ユニットが必要であり、Cloud Robot Unitsライセンスを保有している場合に選択できると考えた方が良いです。（Communityライセンスでは300RU/月利用可能）
1. サーバーレスの最大実行時間は15分で、超過すると強制終了されます。ワークフロー分析やテスト実行も含めた場合、15分で終了できないケースも考えられます。
1. サーバーレスで実行可能なプロジェクトはクロスプラットフォームのみです。パイプラインプロセス開発の際、利用できるアクティビティが制限されます。
1. サーバーレスでワークフロー分析中に、実行中のまま止まり、15分経過してタイムアウトしました。不具合があるかも知れません。
:::

❺接続先を「GitHubに接続」にするか「Azureに接続」にするか選択します。ここでは「GitHubに接続」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/977fb383-dad9-dd08-6398-967981b1e83b.png)


❻GitHubのユーザー名とパスワードを入力してサインインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/1cf0aa4d-f5d9-162b-c0f9-93c624132b79.png)

:::note warn
お使いの環境の状態により、以降の❻～❽のオペレーションが前後する可能性があります。
:::

❼デバイス認証コードを入力し、「確認する」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/182b7304-2532-ce71-2f0d-78c3b18e0fd4.png)

❽「All repositories」か「Only select repositories」を選択し、「install Authorize」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/1f268d33-a480-f932-626e-df6fef2169fe.png)

❾Orchestratorのテナント（パイプラインプロセスの構築で選択したテナント）を確認すると、フォルダ「Pipelines」が作成されており、既定で定義済みパイプラインプロセスが確認できます。これでGitHubの接続とパイプラインプロジェクト作成の準備が整いました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/fac4f13e-1fad-2212-114b-eb3ae7f74fd6.png)

:::note warn
2024年3月時点で、UiPath.Pipelines.Activitiesプレビュー版を利用しているプロセスが存在します。今後、アップデートが予想されますが、パッケージの提供方法は不明です。
:::


# 2.パイプラインプロジェクト作成
❶続いて、パイプラインを作成します。「新しいパイプライン」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/70488264-1172-2a11-a74b-a58c67e63ffb.png)

❷自分のアカウントを選択し、対象となるリポジトリを選択、ブランチ（既定ではmain）、オートメーションプロジェクト（任意）を選択して、「次へ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/79dafb6c-5452-bcd1-e41d-0c47f245d78f.png)

❸パイプラインプロセスを選択すると、選択したパイプラインプロセスの引数が設定できる様になります。ここでは「Build.and.publish】選択しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f92d4c72-6e0f-6f11-b386-402124b05ef4.png)

**＜Build.and.publishの引数＞**
|プロセスの引数|説明|
|:-----------|:------------|
|AnalyzePolicy |Automation Opsのガバナンスで設定したワークフローアナライザーのポリシーを選択。事前に設定しておく必要がありますが、空にするとスキップできます。|
|SkipValidation |パッケージの構築前の検証をスキップ。この値は既定では無効化。|
|OrchestratorUrl|構築されたパッケージのパブリッシュ先OrchestratorのURL。(https://cloud.uipath.com/{組織名}/{テナント名}/orchestrator_)|
|OrchestratorFolder|構築されたパッケージのパブリッシュ先Orchestrator のフォルダー。|

**参考）既定のパイプラインプロセスの種類**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f62247b9-93f9-a846-5ee0-9d5e226b8a16.png)

更に詳しく知りたい方は、こちらをご覧ください。

https://qiita.com/Jun96427231/items/2900bc4c41a8713b944e


❹必要に応じてプロジェクト名を変更します。「コミットのたびに実行」か「手動で実行」か選択し、保存します。ここでは「コミットのたびに実行」を選択しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/55297299-725d-e6ee-da2a-b48dd0539e33.png)

:::note info
**補足**
1. 手動で実行を選択すると、コミットされても実行されません。実行の際はAutomation Ops-パイプランの画面から手動でトリガーを掛けます。尚、「コミットのたびに実行」を選択して保存した場合は手動でもトリガーできます。
2. 「コミットのたびに実行」か「手動で実行」かは後でも変更できます。
変更手順：パイプラインの設定＞パイプラインを編集＞名前とパイプラインのトリガー
:::

❺これでパイプラインの作成ができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/c5c88680-05b4-f720-1e57-bdb18bda786f.png)


# 3.パイプラインプロセスのロボット実行環境の準備

UiPath Automation Ops-パイプラインのユーザーはCoEチームと想定し、ロボット実行環境の準備は基礎なので割愛します。

:::note warn
**注意点**
1. 当たり前ですが、ロボットがアクセスする全てのフォルダに対して忘れずにアカウントを割り当ててください。
1. 試すだけならロールに「Pipelines folder role」を利用すると便利です。よく使われる「Robot」や「Automation User」、「Automation Publisher」では権限が不足する既定のプロセスもあります。例えばテスト実行ではテストセット生成が行われるため、権限が不足したりします。
:::

# 4.パイプラインを実行する

❶GitHubに接続しているUiPath Studioから対象のリポジトリにコミットしてプッシュすると、下記の様にステータスが実行中に変化します。この実行中のパイプラインをクリックして詳細を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/430de4d2-a03a-8daf-660b-5e9c368e280a.png)

❷パイプライン実行中のステージが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/bb4f9ecd-7f32-f64e-a263-ca9ac922818c.png)

:::note info
**ステージの確認**
ステージのアイコンにカーソルをあてるとステージ名とステータスが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/76f522dc-f7a9-0dcb-70e6-4ed2adee21ed.png)
:::
❸3点マークのメニューより、「ログを表示」をクリックするとログで更に詳細を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/084d066c-cde1-86d3-afb8-cc95d182172e.png)

**＜ログ画面＞**
エラー発生時の原因をログで解析することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/ac6afd2d-f303-d0cc-bbc9-13200d06f280.png)

:::note info
**エラー発生時の例**
エラーが発生すると、パイプラインが中断し、中断したステージに赤マークが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/e24c2601-4d43-dca4-eea0-7266002586a1.png)
この例では、分析ステージで中断されています。ログにより、ポリシー違反「ST-DBP-003（空のcatchブロック）」があったため、中断していることがわかります。テスト実行で検証失敗の場合も同様にログに残ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/abe81f9a-ebed-ee87-d679-52ff28b842da.png)
::: 

# おわりに
CoEチームは、RPA推進の役割を担っていることもあり、自動化するマインドも高いプロフェッショナルなので、ほとんどの現場では、既に運用面においても、原始的なマニュアル操作ではなく、自動化を達成しているところが多いかと思います。まだ、そこまで取り組めていない現場であれば、現場の運用手順に合わせたオリジナルのパイプラインプロセスも開発できるのでUiPath Automation Ops-パイプラインの活用も検討材料になるかも知れません。

パイプラインプロセス開発方法については下記ブログをご覧ください。

https://qiita.com/Jun96427231/items/80ac4c978b1f0d827d85