JenkinsのRobot Framework Pluginを使ってみる

# はじめに
[前回](https://qiita.com/tktkban/items/3321d46c28952742452b)の投稿ではRobot Frameworkを用いて、ルーターのテスト自動化を試してみました。
今回の投稿ではそのテスト自動化をJenkinsより実行してみます。

# Jenkins plugin for Robot Framework
https://wiki.jenkins.io/display/JENKINS/Robot+Framework+Plugin
JenkinsのRobot Framework用のプラグインです。プラグインとして主にできることとしては、
* Robot Frameworkの出力結果を読み込んで、テストのPASS/FAILの数をJenkins側に表示
* Robot Frameworkの出力結果(log.htmlとか)をJenkins側から表示させる

Pluginのインストール自体はJenkinsのPlugin Managerより簡単に導入することができます。

# 今回やってみたこと
基本的には[前回](https://qiita.com/tktkban/items/3321d46c28952742452b)の投稿にて実施したことをJenkinsから実施することです。

# Jenkinsのジョブ設定
## GitHubからソースコードの読み込み
<img width="954" alt="Jenkins-rf-1" src="https://qiita-image-store.s3.amazonaws.com/0/100369/fd521436-cb70-a651-1366-2ee0a9345e40.png">
ここでは、単純にジョブの名前の設定と、[前回](https://qiita.com/tktkban/items/3321d46c28952742452b)作成したソースコード(netmiko/textfsmを用いたPythonとそれを用いたrobotファイル)を読み込む設定です。

## ビルド設定とRobot Framework Plugin設定
<img width="940" alt="Jenkins-rf-2" src="https://qiita-image-store.s3.amazonaws.com/0/100369/58aabe15-ad77-4a3a-71bd-0b4a818143da.png">
### ビルドの設定
ビルドの設定では、以下のことをシェルスクリプトから実行しています
1. 今回のBuild IDの名前をつけたディレクトリを作成する
2. Robot Frameworkによって、テスト自動化を走らせる

1.の目的としては、Jenkinsでは何回もビルドが実行されるため、それぞれの試験結果を別のディレクトリに保存したいからというものです。

2.では画像では切れているのですが、以下の設定がされています。
```
/usr/local/bin/robot --outputdir ${BUILD_ID}_report -v IP:192.168.1.34 -v user:test -v pass:test -v hostname:xrv1 -v ifname:Gi0/0/0/0 ifshut_noshut.robot
```
[前回](https://qiita.com/tktkban/items/3321d46c28952742452b)の投稿に無いオプションとしては--outputdirにて結果ファイルの出力先を変更していることです。
目的としては、前節と同様に、「それぞれの試験結果を別のディレクトリに保存したいから」です。

### Robot Framework Plugin設定
以下の２点を設定するだけです。
1. Robot Frameworkの出力ファイルが置かれるディレクトリの場所
2. Jenkinsの結果の閾値
1.については、前節のoutputdirオプションにて設定したディレクトリとなります。
2.についてはお好みでどうぞ！

# ビルドの実行と結果の閲覧
ではビルドを実行してみましょう。

## ビルド実行
<img width="227" alt="run_build" src="https://qiita-image-store.s3.amazonaws.com/0/100369/4c3008a1-f822-dff1-3c51-cd3838d3d1fa.png">
左のメニューのビルド実行から実行することができます。

<img width="363" alt="console1" src="https://qiita-image-store.s3.amazonaws.com/0/100369/57e63466-cb68-0409-97ca-9b07c99da333.png">
ビルド中のコンソール出力は上記のところから見ることができます。

<img width="942" alt="console2" src="https://qiita-image-store.s3.amazonaws.com/0/100369/ef316ffb-60ff-d87f-c3fe-640ccb178a64.png">
コンソール出力としてはCLIから実行されるものと同一ですね。

## 結果の閲覧
<img width="568" alt="result1" src="https://qiita-image-store.s3.amazonaws.com/0/100369/52c8777d-bdb4-9f7c-ee16-3999c7ee0c75.png">
ビルドが終了したら、該当のビルド結果を見てみると、上のようにRobot Frameworkの結果を見ることができます。
今回の試験では7テスト項目中、全ての項目がPassしていることがわかります。
ここで、上のOpen log.htmlのリンクから結果のhtmlを見てみると、

<img width="1226" alt="result2" src="https://qiita-image-store.s3.amazonaws.com/0/100369/257a6045-119c-cc50-4464-162c77119396.png">
うーん、エラーで見えないですね。
このエラーでぐぐってみると、https://issues.jenkins-ci.org/browse/JENKINS-32118 で解決できるっぽい。[こちら](https://issues.jenkins-ci.org/browse/JENKINS-32118?focusedCommentId=315672&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-315672)のコメントを実施してみて、もう１回ビルドした結果(log.html)を見てみると、

<img width="907" alt="result3" src="https://qiita-image-store.s3.amazonaws.com/0/100369/5b63f00e-ddd0-ee15-95aa-0049403b849f.png">
無事結果をみることができました。

# おわりに
JenkinsのRobot Framework Pluginを試してみました。
Jenkinsを介すことで、さらにユースケースの幅が広がると思います。
また、個人的にはwebブラウザ上で直接それぞれのビルドの結果を閲覧できることが強力だと思います。