UiPath Automation Ops-パイプラインでRPAもCI/CD導入の時代に？パイプラインプロセス開発方法をガイドします

# はじめに

本ブログでは、UiPath Automation Ops-パイプラインのパイプラインプロセスをオリジナルで開発する方法をガイドします。定義済みの既定のパイプラインでは、現場のRPA運用手順と合わないと言ったこともあるかと思いますが、ご安心ください！パイプラインプロセスは、ユーザーによる開発（Studioでワークフロー開発）を想定した仕組みになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/43067ee9-7778-b425-b849-5795bdc68cde.png)


パイプラインプロセスを利用するためのAutomation Ops-パイプラインのガイドについては、下記のブログをご覧ください。

https://qiita.com/Jun96427231/items/d4a447b332d6347e7546

下記のブログでは既定で、定義済みのパイプラインプロセスついて図解しています。

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


尚、公式のドキュメントポータルに記載している内容が少ないため、本ブログでは現在の挙動で確認していることを書いています。公式のドキュメントは下記のリンクです。

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


# よくあるご質問（FAQ）
質問されてないけどw
事前に知っておきたいポイントを自問自答します！

### Q1.作成するパイプラインプロセスの場所は？
Pipelinesランタイム環境のフォルダにプロセスを作成します。ここで作成したプロセスはAutomation Ops-パイプラインでプロジェクト作成時に選択できる様になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/b81ff9c8-e3ae-3c59-6a5c-16caedfb32c9.png)

### Q2.パイプラインプロセス作成時の注意点は？
1. パイプラインプロセスはバッググラウンドプロセスで動作します。バッググラウンドプロセスでは利用できるアクティビティに制限されます。
2. 定義済みの既定のパイプラインプロセスはクロスプラットフォームプロジェクトで作成されていますが、Windowsプロジェクトでも作成可能です。Windows-レガシーには対応されてません。

### Q3.パイプラインプロセスの専用アクティビティパッケージは何？
Automation Opsパイプライン アクティビティが提供されており、UiPath.Pipelines.Activitiesパッケージをインストールして利用可能になります。定義済みの既定のパイプラインプロセスも、本アクティビティを利用して構築されています。後は、API使えば、やりたいことはだいたい出来そうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/7b8099d5-7e65-00e0-2e89-572e6f45d444.png)

|アクティビティ名|説明|
|:-----------|:------------|
|ステージ|パイプラインのステップを示するメインアクティビティ。|
|テストを実行|テストをワークフローに対してパイプラインの一部として実行する。|
|パッケージをダウンロード|Orchestratorからパッケージをローカルにダウンロードする。|
|パッケージをパブリッシュ|プロジェクトパッケージをOrchestratorにパブリッシュする。|
|プロセスを更新|Orchestrator の特定のプロセスを更新する。|
|分析|プロジェクトを分析する。|
|構築|プロジェクトを構築して .nupkg ファイルを生成する。|
|複製|プロジェクトで使用するリポジトリを複製する。|

### Q4.パイプラインプロジェクト作成時に設定する引数作成方法は？
Mainの引数が、パイプライン作成時に表示され、設定できるようになってます。この引数の設定値を利用した処理を実装できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f166abec-8c94-67a0-1d5e-14c4505ced4f.png)


### Q5.Automation Ops-パイプラインで表示されるステージ表示は、どの様に作成しますか？
下図の様にステージアクティビティの表示名がパイプライン実行中のステージ名として表示される様になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/9d63994c-133f-bc96-16a0-e754e8fb55d6.png)

::: note warn
Mainシーケンス以外の階層で、例えばトライキャッチなどのアクティビティの中にステージアクティビティを配置すると、ステージ表示されなくなるので注意が必要です。
:::

### Q6.Automation Ops-パイプラインのログ画面で表示されるログは任意のメッセージを出力できますか？
標準の「メッセージをログ」アクティビティで出力されたメッセージが、Automation Ops-パイプラインのログにも出力される様になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/4c89e991-a6b6-15d6-fc63-4a0656114f87.png)


# オリジナルのパイプパインプロセスを作って見る

初心者は既定のパイプラインプロセスのワークフローを流用するのがお勧めです。実際に変更して動きを確認することで、より理解を深めると言ったアプローチですね。本ブログでは下記のカスタマイズを行います。
1. ***「Build.and.promote.with.approval」の日本語化対応***
1. ***CI/CD﻿ツ﻿ー﻿ルでよくサポートされているSlack通知をサポート***

## 1.既定のパイプラインプロセスのワークフローを入手
❶Pipelinesランタイム環境のフォルダ「Pipelines」にあるパッケージフィードからパッケージをダウンロードするとワークフローも格納されています。パッケージ「Build.and.promote.with.approval」をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/9417a9a5-e281-5c5c-5e77-cdc29f330294.png)

## 2.アクティビティの制限を減らすためにWindowsに変換
❶サーバーレスロボットを利用しない場合は、クロスプラットフォームのプロジェクトにしているメリットは、あまりなさそうなので、Windowsプロジェクトに変換して、先に利用できるアクティビティを増やしておくのも良いかなと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/1c538e10-c753-f299-9116-c76577b2faaa.png)

:::note warn
一度、Windowsに変換すると、クロスプラットフォームには戻せませんのでご注意ください。
:::

❷プロジェクト設定で「バックグラウンドで開始」を「はい」にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/6753cfa4-c7f2-fd4b-cabd-c3e4cc53925d.png)


## 3.日本語化
個人的に日本語化したいのは4箇所です。

❶プロジェクト設定で日本語の名前に変更する。このブログでは「承認を得て本番環境のプロセスを更新しSlack通知」にしました。

❷引数を日本語に変更します。Automation Ops-パイプラインのプロジェクト設定の引数設定の項目名も日本語になります。

❸ステージアクティビティの表示名とログメッセージを日本語にします。Automation Ops-パイプラインのステージ名、ログ表示が日本語になります。

***＜例＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/83c7c1a6-64bc-ab7c-2f01-625a0857b3b0.png)

❹Action Centerのフォームも日本語に置き換えます。
***＜フォームの表示文字列の変更例＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5125da74-8629-a431-42ed-ec4809a5a86f.png)

## 4.CI/CDツールで、よくあるSlack通知をサポート

❶SlackチャンネルをAutomation Ops-パイプラインで設定変更できる様に引数に設定項目として追加しときたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/60fdf6b7-a76c-3159-a296-97c0779197a8.png)


❷例外発生時、承認却下の時、成功時にSlack通知すると言った処理を追加します。尚、例外発生時のSlack通知で利用するTryCatchは個々のステージの中に実装する必要があります。

＜例外発生時（各ステージ個々に実装）＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/6e587e2c-65ef-6f0c-12f0-020801d8e52d.png)


＜承認却下の時（フォームで入力された[コメント]もメッセージに追加）＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/85e3b15b-bfd3-d3e4-0098-3d46c33c98de.png)

＜成功時（ステージ「成功時にSlack通知」を追加し、その中に実装＞

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/0b87bef5-3579-010e-639f-1ee66357c6c4.png)


❸最後に、作成したワークフローをPipelinesフォルダへパブリッシュ！プロセスを作成してスタンバイします！

## 5.カスタマイズした結果を確認しよう！

❶新しいパイプラインを作成します。作成したパイプロインプロセスが選択できる様になってます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/3eeb6321-cea7-bffc-567a-6bca9fdf50f1.png)

❷設定項目名が変更した日本語で表示、Slackチャンネル名も設定できる様になってます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/79393a3c-fc33-ff5c-f533-cceb8b87c7f6.png)

❸実行するとステージ名が変更した日本語で表示されています！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/10a7b01c-346b-18ad-324c-3c27ced0109c.png)

❹フォーム画面が日本語で表示されています！（これは当たり前かw）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/fddb5f21-41e7-c346-4223-d97ae7ef95d1.png)

❺ステージ「成功時にSlack通知」が追加されてます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/18b2a047-8bb6-0e39-7e71-e83476ad071f.png)

❻終わったらSlack通知され、結果がチームで共有されます！
下記のメッセージは例です。これ以外でも色々と付加できます。

***＜例外発生時＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/a78cbec6-a2a9-d3b8-279f-2e20f246cf85.png)

:::note info
ワークフロー分析やテスト実行で検証失敗時も例外になります。
:::

***＜承認却下の時＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/8d9975af-34be-619d-7ff9-7f0704f18f01.png)

***＜成功時＞***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/d3b3460c-72b1-501e-2def-0fc85c260fc5.png)

## 6.カスタマイズしたパイプラインプロセスを実行した動画

<iframe width="560" height="315" src="https://www.youtube.com/embed/F5fFWbIe6hg?si=XWnVDm3LPh1UnsMb" 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>



# おわりに
現場のRPA運用手順に合わせたオリジナルのパイプラインを開発し、RPA保守運用の課題解決のために自動化すると言ったアプローチもありますが、いっそのこと現場のRPA運用手順を刷新してツール機能が求めているプロセスに合わせて最適化した方が結果的に信頼性が高まり、効率化も進むのでは？と思ったりもしてます。
最後に、UiPathは、新しい機能がどんどんリリースされているので、活用しなければ、その恩恵が享受されることはない。それを自ら活用したり、推進したりするのはオートメーションCoEなので、その役割の重要性は益々高まっていると言えますね！