8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【UiPath】CI/CD環境の構築その1(Jenkins編)

Last updated at Posted at 2023-04-10

1. はじめに

  • アジャイルの普及とともに、システム開発の現場でCI/CDを導入しているプロジェクトが多くなってきています。
  • UiPathの開発では、GitHub等のバージョン管理システムを利用しているプロジェクトは見られるようになりましたが、まだCI/CDは普及していないように感じます。
  • 本記事では、UiPathが提供しているUiPath Jenkinsプラグインを利用して、CI/CD環境を構築する手順を示します。

2. CI/CDとは

  • CI/CDとは「Continuous Integration / Continuous Delivery(継続的インティグレーション / 継続的デリバリー)」の略で、ソフトウェアの変更に必要なテストを自動化し、常にリリースできる状態にしておく開発の手法をいいます。

  • UiPathでは、UiPath Studioで開発したプロジェクトをバージョン管理システムにプッシュするとCI/CDツールが検知して、自動的にビルドを行い、Orchestratorにパブリッシュ、デプロイ、テストの実行などの一連の流れを構築することが出来ます。
    Jenkins_08.png

3. 前提

  • GitHubなどのバージョン管理システムにリポジトリを作成済でUiPath Studioからコード連携がされている
  • Windows環境にJenkinsをインストール済(検証バージョン2.387.1)
  • JenkinsにGitプラグインがインストールされている(インストール時に「推奨プラグインをインストールする」を選択していればインストールされているはずです)
  • 本記事ではGitHubを利用しています。GitLabやBitbucketなど他のバージョン管理システムをご利用の場合は、ご利用のシステムに合わせてJenkinsと連携をしてください。
  • Jenkinsの画面が英語で表示されている場合は、ブラウザの言語設定を日本語に変更するか、Localeプラグインを導入することで日本語表示に切り替えることが出来ます。

4. CI/CD環境の構築

4-1. UiPath Jenkins Pluginのインストール

Jenkinsの左メニューから「Jenkinsの管理」-> 「プラグインの管理」を選択します。
Jenkins_01.png
「Available plugins」を選択して、「UiPath」と検索ボックスに入力すると候補にUiPathプラグインが表示されます。
「Install」にチェックを入れ、「Install without restart」をクリックします。
Jenkins_03.png
UiPathプラグインのインストールが始まります。
「インストール完了後、ジョブがなければJenkinsを再起動する」にチェックを入れると自動的にJenkinsの再起動がされます。
Jenkins_04.png
再起動が終わるとログイン画面が表示されるので、再度ログインします。
以上でJenkinsプラグインのインストールは完了です。

4-2. JenkinsとGitHubの連携

JenkinsサーバーにGitがインストールされている必要があります。Gitのインストール後にJenkinsを再起動することでJenkinsがGitを認識できるようになります。

Jenkinsの再起動方法:http://(Jenkinsサーバー)/safeRestart
例:http://localhost:8080/safeRestart

今回はSSHで接続します。
JenkinsとGitHubを連携させるためには、Jenkinsサーバー上で作成した公開鍵をGitHubに登録する必要があります。以下に手順を示します。

SSH秘密鍵と公開鍵の作成

Jenkinsサーバ上で以下のコマンドを入力します。

ssh-keygen -t ed25519

コマンドを実行して何回かエンターキーを押していくと、%USERPROFILE%\.sshに次のファイルが作成されます。今回はパスフレーズは省略していますが、必要に応じて設定してください。
Jenkins_09.png

GitHubに公開鍵を登録

GitHubにログイン後、左上のアイコンをクリックしたら表示されるメニューの「Settings」を選択します。
Jenkins_10.png

「SSH and GPG keys」を選択します。
Jenkins_11.png

「New SSH key」を選択して登録画面を表示させます。
「Title」に任意の名前を入力して、「Key」に次のコマンドでクリップボードにコピーした内容を貼り付けます。このコマンドはJenkinsサーバ上で実行します。
入力が完了したら、「Add SSH key」をクリックして登録します。

C:\>clip < %USERPROFILE%\.ssh\id_ed25519.pub

Jenkins_12.png

これでGitHubへの公開鍵の登録は完了です。
Jenkins_13.png

JenkinsからGitHubへの接続確認(known_hostsファイルの作成)

Jinkinsサーバー上で次のコマンドを実行してGitHubへの接続を確認します。

ssh -T git@github.com

You've successfully authenticatedと表示されれば接続は出来ています。GitHub does not provide shell access.と表示されますが気にしなくて大丈夫です。
コマンドを実行すると%USERPROFILE%\.sshknown_hostsファイルが作成されます。
Jenkins_14.png

重要(ハマりポイント)
SYSTEMユーザーでJenkinsサービスを起動している場合は、上記の方法ではJenkinsが秘密鍵とknown_hostsファイルを認識することが出来ません。以下の方法で秘密鍵とknown_hostsの内容を登録します。

  • 秘密鍵
    • 「Jenkinsの管理」->「Manage Credentials」にある「Add Credentials」をクリックして秘密鍵を登録します。
  • known_hosts
    • 「Jenkinsの管理」->「グローバルセキュリティの設定」にある「Git Host Key Verification Configuration」を「Manually provided keys」に変更して、上で作成したknown_hostsファイルの内容をJenkinsに登録します。

以上でJenkinsとGitHubが連携できるようになりました。

4-3. JenkinsからOrchestratorに接続できるようにするための事前設定

JenkinsがOrchestatorに接続できるようにするには、Orchestratorに外部アプリケーション登録する必要があります。

Orchestrator外部アプリケーションの登録

Automation Cloudの左メニューにある「管理」->「外部アプリケーション」を選択します。

オンプレOrchestatorの場合は、テナントメニューの「アクセス権を管理」->「アカウントおよびグループを管理」から外部アプリケーション画面に遷移することができます。

Jenkins_15.png

「アプリケーションを追加」をクリックします。
Jenkins_16.png

以下の内容を入力します。入力したら、「追加」ボタンをクリックして登録します。

基本情報
項目
アプリケーション名 任意の名前
アプリケーションの種類 機密アプリケーション
リダイレクトURL 入力なし
スコープ情報
項目
リソース Orchestrator API Access
ユーザースコープ /
アプリケーションスコープ
アプリケーションスコープ
スコープ OR.Assets
OR.BackgroundTasks
OR.Execution
OR.Folders
OR.Jobs
OR.Machines.Read
OR.Monitoring
OR.Robots.Read
OR.Settings.Read
OR.TestSetExecutions
OR.TestSets
OR.TestSetSchedules
OR.Users.Read

Jenkins_17.png

登録されるとアプリIDとアプリシークレットが表示されます。
アプリシークレットはこのダイアログを閉じると確認することが出来なくなるので必ずコピーしてテキストファイル等に控えておいてください
Jenkins_18.png

Jenkinsにアプリシークレットを登録

続いてOrchestratorの外部アプリケーションの登録で取得したアプリシークレットをJenkinsに登録します。
Jenkinsの左メニューの「Jenkinsの管理」から「Manage Credentials」を選択します。
Jenkins_19.png
「Stores scoped to Jenkins」の「(global)」にマウスを合わせるとドロップダウンリストが表示されるので、その中にある「Add credentials」を選択します。
Jenkins_20.png

以下の内容を入力します。入力したら、「Create」ボタンをクリックして登録します。

項目
種類 Secret text
スコープ グローバル
Secret Orchestratorの外部アプリケーション登録で取得したアプリシークレット
ID 入力しなくてもOK
説明 分かり易い説明を入力

Jenkins_21.png
登録されました。
Jenkins_22.png

以上で、JenkinsからOrchestratorに接続するための事前設定は完了です!

4-4. ジョブを登録してみる

ここからは、実際にJenkinsジョブを作成してOrchestratorにプロセスがパブリッシュ/デプロイされるところまで環境を構築します。

Jenkins左メニューから「新規ジョブ作成」を選択します。
今回は、「フリースタイル・プロジェクト」でジョブを作成します。ジョブ名に任意の名前を入力して、「フリースタイル・プロジェクトのビルド」を選択後、「OK」をクリックします。

ジョブ名、後ほど登場するデプロイ先のフォルダ名に日本語が含まれているとジョブ実行に失敗するようです。日本語を含まない名称を指定してください。

Jenkins_23.png
「ソースコード管理」に「Git」を選択後、「リポジトリURL」にビルドしたいGitHubリポジトリのURLを入力します。URLは以下のフォーマットで記述します。
「ブランチ指定子」にビルド対象のブランチを指定してください。

git:github.com:[GitHubアカウント]/[リポジトリ名].git

Jenkins_24.png
続いて「ビルド環境」の「ビルド開始前にワークスペースを削除する」にチェックを入れます。前回ビルドしたファイルが削除されきれいな状態でジョブを実行することが出来ます。
Jenkins_32.png
画面を下にスクロールしていくと、「Build Steps」あります。
「ビルド手順の追加」をクリックして、「UiPathのNugetパッケージをパブリッシュ」を選択します。
Jenkins_25.png
タスク名にパブリッシュと書かれていますが、実際には指定したプロジェクトをビルドしてJenkinsにビルドしたNugetパッケージを作成するタスクになります。
今回は次の内容で入力します。

項目
バージョン管理メソッドを選択 パッケージのバージョンを自動生成
プロジェクトのパス ${WORKSPACE}
出力フォルダー ${WORKSPACE}\Output
出力の種類 Pack a process project

Jenkins_26.png

続いて「ビルド後の処理」にタスクを追加します。
「ビルド後の処理の追加」をクリックして、「UiPathのNugetパッケージをデプロイ」を選択します。
Jenkins_27.png
「UiPathのNugetパッケージをデプロイ」では「UiPathのNugetパッケージをパブリッシュ」タスクで作成したNugetパッケージをOrchestratorにパブリッシュ/デプロイします。
今回は次の内容で入力します。

基本項目
項目
パッケージのパス ${WORKSPACE}\Output
Orchestratorのアドレス https://cloud.uipath.com/
Orchestratorテナント DefaultTenant
Orchestratorのフォルダー Shared
ロボットグループ 入力なし
Automatically create/update process チェック
認証 外部アプリケーションを使用してCloud Orchestratorに認証
Identity Url 入力なし
Account Name https://cloud.uipath.com/[アカウント名]/[テナント名]
上記URLの[アカウント名]を入力
Application Id Orchestrator外部アプリケーションの登録で取得したアプリID
Application Secret Jenkinsに登録したCredentialの説明が表示されているはずなのでそのままでOK
Application Scope(s) Orchestrator外部アプリケーションの登録で設定したスコープの一覧

「シークレット文字列を指定してください。」と表示されていますが、気にせず「保存」をクリックします。
Jenkins_28.png
以上でジョブの作成は完了です。

5. ジョブを実行してみよう

ジョブを作成したので、いよいよジョブを実行してみましょう。
ジョブを実行するには、作成したジョブの「ビルド実行」をクリックします。ジョブが実行されるとビルドが始まり画面左下に進捗状況が表示されるので完了するまで待ちましょう。
Jenkins_29.png
緑〇が表示されればジョブが正常終了したことを表しています。
Jenkins_30.png
Orchestratorを見るとSharedフォルダにパッケージが無事デプロイされていました。
Jenkins_31.png

6. おわりに

  • 無事、JenkinsとGitHubを利用したCI/CD環境の構築が出来ました。
  • ただ、このままではジョブの実行をJenkins上で手動で行わなければなりません。StudioからファイルをGitHubにプッシュしたことをトリガーとしてJenkinsのジョブを実行するにはWebhookを設定する必要があります。
  • また、今回はフリースタイル・プロジェクトを利用しましたが、パイプラインを利用するとより柔軟なジョブの構築が可能になります。
  • 次回はWebhookを導入して一連の流れを自動的に実行できるようにします。

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?