2016年になっても、これさえ入れておけば大丈夫。Jenkins Plugin Must Install 16選!!　


## ごあいさつ
   
こんにちは。[CYBIRDエンジニア Advent Calendar](http://qiita.com/advent-calendar/2015/cybird)19日目の[cy-katsuhiro-miura](http://qiita.com/cy-katsuhiro-miura)です。
 
最近、めっきりコードを書いておりません。なんだかMTGばかりの毎日を過ごしているので、久しぶりにデブい内容の話をすると楽しいですね。
 
   
 18日目は[cy-hiroshi-chiba](http://qiita.com/cy-hiroshi-chiba)さんの[Google Chartsを使ってみた](http://qiita.com/cy-hiroshi-chiba/private/84096f9c44dc292f6c5f)でした。

僕もjavascriptそろそろ勉強しなおさないといけないなぁと思っているとこなので、こういう記事はタメになりますね！

## Jenkinsおじさん

最近、Jenkinsおじさんの人気、高いですよね。
自分もJenkinsおじさん大好きです。
弊社にも、Jenkinsサーバたくさんあるのですが、結構、サーバによって、入っているPluginにバラツキがあるんですよね。

今回は、自分がJenkins使ってて、これ超便利じゃね！？ってなったプラグインをご紹介します。

2016年、新しい年に新しいJenkinsサーバを立てる時にこの記事がみなさまの参考になれば幸いです。


## ソース管理
#### GIT plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
#### GitHub plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin

まずはGit。
Jenkinsをインストールすると、Subversion Plug-inとかCVS Plug-inとかは入ってます。
ですが、なぜかGitが入ってない。
いまどき、マジか。
仕方ないのでこれを入れましょう。
Githubでソース管理してるならGitHub pluginも一緒に。
[Assembla](https://wiki.jenkins-ci.org/display/JENKINS/Assembla+plugin)とか、[Bitbucket](https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin)とか、[GitLab](https://wiki.jenkins-ci.org/display/JENKINS/GitLab+Plugin)とかもあるのでご自身の環境に合わせて適当に。



##ユーザ認証と権限
#### Redmine OAuth Plugin

うちのJenkinsサーバは、各プロジェクト単位で立っているので、
全部で十数台あり、これでユーザ管理を個別でやるのは、とても面倒くさいです。
なので、ユーザ認証をRedmineでやることにしました。

まずここ↓を参照してRedmineのユーザでOAuth認証できるようにします。
[【Redmine・Gitlab・Jenkins のログインパスワードの管理が大変になったので OAuth 化した】](http://d.hatena.ne.jp/suer/20130530/redmine_oauth)


ここ↓に載ってる
[Jenkins のプラグインの配布に JitPack.io が便利過ぎる件]
(http://d.hatena.ne.jp/mallowlabs/20150419/jenkins_plugin_from_jitpack)

↓このhpiをDLしてきてインストールしてます。
[Redmin-OAuth-Plugn](https://jitpack.io/com/github/mallowlabs/redmine-oauth-plugin/330130879f/redmine-oauth-plugin-330130879f.hpi)


【注意点（というかハマったとこ）】 
普通にJenkinsをインストールするとポートが8080で上がってくると思います。
これを80で受けれるように、ApacheのProxyとかでlocalhost:8080に流したりしていると、OAuthで認証したあとリダイレクトする先がlocalhost:8080になってしまいます。
なのでこれを回避するには、

- 8080で運用する。
- iptablesで8080 -> 80に流す
- Jenkinsをポート80で上げる

みたいなことをしないといけないです。



#### Role-based Authorization Strategy
 https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin

Redmineで認証できるようになったので、ほっとくとRemineに登録されている全ユーザが全Jenkinsのjobを実行できるようになってしまいます。
中には、１台で複数のプロジェクトのJobを回してるJenkinsがあったり、管理者しか実行してほしくないJobがあったりもするので、こいつでView単位で見えたり見えなかったり、実行できたりできなかったり、といった制御をするロール作っています。



## Build Job管理
#### Job Import Plugin　
 https://wiki.jenkins-ci.org/display/JENKINS/Job+Import+Plugin

前述したように、弊社には複数台のJenkinsサーバがあるんですが、実行してるJobは、割りとみんな似たり寄ったりだったりします。
そんな時はこれ。
別のJenkinsサーバのJobをImportできます。
「既存ジョブのコピー」は同サーバのジョブのコピーですが、別のJenkinsサーバのJobをコピーしたいときはこれ。
  　

## Build Flow管理
#### Build Pipeline Plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin

簡単なFlowならこれ。
「Build Plugin View」が作れるようになります。
「他プロジェクトの後にビルド」とかで関連付けたJob同士の前後関係がでJobの前後関係が図になってて、わかりやすいです。

#### CloudBees Build Flow plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin

ちょっと複雑なことをやるならこれ。
DSLでJobの実行順を定義できる。並列実行させたり、パラメータ変えながらの繰り返し実行も大丈夫。
ただし、↑の[Build Pipeline Plugin]では、順次実行した結果が見えないです。

#### Build Graph View Plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Build+Graph+View+Plugin

で、[Build Flow Plugin]で実行した結果を図で表示するならこちら。

![スクリーンショット_2015-12-17_22_50_47.png](https://qiita-image-store.s3.amazonaws.com/0/62573/53c2c9d7-ecf7-b9ba-e5be-74724e81212a.png "スクリーンショット_2015-12-17_22_50_47.png")
こんな感じ。



## Build Parameters系
#### Parameterized Trigger Plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin
 
#### Parameterized Remote Trigger Plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Remote+Trigger+Plugin

別のJobの実行完了をトリガーにしてJobを実行します。
[Parameterized Trigger Plugin]は同一JenkinsのJobで、
[Parameterized Remote Trigger Plugin]は別のJenkinsサーバのJobで。
前実行のJobのパラメータを引き継いだり、実行結果を元にパラメータを作ったり。 
 
#### Matrix Configuration Parameter Plugin 
 https://wiki.jenkins-ci.org/display/JENKINS/Matrix+Combinations+Plugin

パラメータを変えて何度もBuildする必要があるけど、
そのパターンがマトリックスになってる時、よくありますよね。
そんな時はこれ。

#### Rebuilder
 https://wiki.jenkins-ci.org/display/JENKINS/Rebuild+Plugin
も一回Buildします。
これ、何が便利かというと、その時に実行したパラメータでもう一回Buildできるってとこ。
別のJobから起動されるJobとかGitHubのPullRequestをフックに動かしてるやつとか、渡ってくるパラメータが一杯あったり動的に変わるやつを、手動で動かさないといけない時とかに便利です。




## 結果通知

#### ChatWork Plugin
 https://wiki.jenkins-ci.org/display/JENKINS/ChatWork+Plugin

[HipChat](https://wiki.jenkins-ci.org/display/JENKINS/HipChat+Plugin),[Slack](lack Notification Plugin)もありますが、弊社はChatwork。
日本語なのは便利じゃないですか。

#### Twilio Notifier Plugin
 https://wiki.jenkins-ci.org/display/JENKINS/Twilio+Notifier+Plugin
 
もうホントにクリティカルなJobの結果はメールでもチャットでもなく、もっとしっかり把握したいという人向け。
なんと電話がかかってきます。
電話口でメッセージやステータスも読み上げてくれます。
[Twilio](http://twilio.kddi-web.com/)のアカウントが必要なので、事前に取得しておきましょう。


## その他
　
#### Metrics Disk Usage Plugin 

![スクリーンショット 2015-12-17 22.38.30.png](https://qiita-image-store.s3.amazonaws.com/0/62573/7d3721cf-0744-f6a1-2b87-afae6412dcfa.png "スクリーンショット 2015-12-17 22.38.30.png")

JenkinsのDisk容量をかんしてくれます。
Buildを何度も回してるとローカルに成果物が一杯溜まってしまいがち。
これが入っていれば、なんのプロジェクトが容量をくってるのかも、一目瞭然。

 
#### Build Trigger Badge Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Build+Trigger+Badge+Plugin

 ![Kobito.lOk7TT.png](https://qiita-image-store.s3.amazonaws.com/0/62573/bf5cbb98-d7e7-baa4-0613-d14cf4e39bc9.png "Kobito.lOk7TT.png")

ビルド履歴の横に、何をトリガーにして実行されたかのバッチが表示されます。
先週に手動で実行した時の条件でももう一回実行したい、みたいな時、履歴を追うのが楽ちんでいいですね。


## 最後に
   
Jenkinsにかぎらず、便利なツールが使いこなせるのってカッコイイですよね。
自分もJenkinsを使いこなせているとはまだまだ言えないので、これからも精進したいと思います。



[CYBIRD エンジニア Advent Calendar](http://qiita.com/advent-calendar/2015/cybird) 明日は、CYBIRDエンジニアNo1イケメン（俺調べ）の[@sgt](http://qiita.com/sgt)さんの「UIWebViewに甘んじてた俺がWKWebViewというパンドラの箱を開けた話」です！

楽しみですね！