ごあいさつ
こんにちは。CYBIRDエンジニア Advent Calendar19日目のcy-katsuhiro-miuraです。
最近、めっきりコードを書いておりません。なんだかMTGばかりの毎日を過ごしているので、久しぶりにデブい内容の話をすると楽しいですね。
18日目はcy-hiroshi-chibaさんのGoogle Chartsを使ってみたでした。
僕もjavascriptそろそろ勉強しなおさないといけないなぁと思っているとこなので、こういう記事はタメになりますね!
Jenkinsおじさん
最近、Jenkinsおじさんの人気、高いですよね。
自分もJenkinsおじさん大好きです。
弊社にも、Jenkinsサーバたくさんあるのですが、結構、サーバによって、入っているPluginにバラツキがあるんですよね。
今回は、自分がJenkins使ってて、これ超便利じゃね!?ってなったプラグインをご紹介します。
2016年、新しい年に新しいJenkinsサーバを立てる時にこの記事がみなさまの参考になれば幸いです。
ソース管理
GIT plugin
GitHub plugin
まずはGit。
Jenkinsをインストールすると、Subversion Plug-inとかCVS Plug-inとかは入ってます。
ですが、なぜかGitが入ってない。
いまどき、マジか。
仕方ないのでこれを入れましょう。
Githubでソース管理してるならGitHub pluginも一緒に。
Assemblaとか、Bitbucketとか、GitLabとかもあるのでご自身の環境に合わせて適当に。
##ユーザ認証と権限
Redmine OAuth Plugin
うちのJenkinsサーバは、各プロジェクト単位で立っているので、
全部で十数台あり、これでユーザ管理を個別でやるのは、とても面倒くさいです。
なので、ユーザ認証をRedmineでやることにしました。
まずここ↓を参照してRedmineのユーザでOAuth認証できるようにします。
【Redmine・Gitlab・Jenkins のログインパスワードの管理が大変になったので OAuth 化した】
ここ↓に載ってる
[Jenkins のプラグインの配布に JitPack.io が便利過ぎる件]
(http://d.hatena.ne.jp/mallowlabs/20150419/jenkins_plugin_from_jitpack)
↓このhpiをDLしてきてインストールしてます。
Redmin-OAuth-Plugn
【注意点(というかハマったとこ)】
普通にJenkinsをインストールするとポートが8080で上がってくると思います。
これを80で受けれるように、ApacheのProxyとかでlocalhost:8080に流したりしていると、OAuthで認証したあとリダイレクトする先がlocalhost:8080になってしまいます。
なのでこれを回避するには、
- 8080で運用する。
- iptablesで8080 -> 80に流す
- Jenkinsをポート80で上げる
みたいなことをしないといけないです。
Role-based Authorization Strategy
Redmineで認証できるようになったので、ほっとくとRemineに登録されている全ユーザが全Jenkinsのjobを実行できるようになってしまいます。
中には、1台で複数のプロジェクトのJobを回してるJenkinsがあったり、管理者しか実行してほしくないJobがあったりもするので、こいつでView単位で見えたり見えなかったり、実行できたりできなかったり、といった制御をするロール作っています。
Build Job管理
Job Import Plugin
前述したように、弊社には複数台のJenkinsサーバがあるんですが、実行してるJobは、割りとみんな似たり寄ったりだったりします。
そんな時はこれ。
別のJenkinsサーバのJobをImportできます。
「既存ジョブのコピー」は同サーバのジョブのコピーですが、別のJenkinsサーバのJobをコピーしたいときはこれ。
Build Flow管理
Build Pipeline Plugin
簡単なFlowならこれ。
「Build Plugin View」が作れるようになります。
「他プロジェクトの後にビルド」とかで関連付けたJob同士の前後関係がでJobの前後関係が図になってて、わかりやすいです。
CloudBees Build Flow plugin
ちょっと複雑なことをやるならこれ。
DSLでJobの実行順を定義できる。並列実行させたり、パラメータ変えながらの繰り返し実行も大丈夫。
ただし、↑の[Build Pipeline Plugin]では、順次実行した結果が見えないです。
Build Graph View Plugin
で、[Build Flow Plugin]で実行した結果を図で表示するならこちら。
Build Parameters系
Parameterized Trigger Plugin
Parameterized Remote Trigger Plugin
別のJobの実行完了をトリガーにしてJobを実行します。
[Parameterized Trigger Plugin]は同一JenkinsのJobで、
[Parameterized Remote Trigger Plugin]は別のJenkinsサーバのJobで。
前実行のJobのパラメータを引き継いだり、実行結果を元にパラメータを作ったり。
Matrix Configuration Parameter Plugin
パラメータを変えて何度もBuildする必要があるけど、
そのパターンがマトリックスになってる時、よくありますよね。
そんな時はこれ。
Rebuilder
https://wiki.jenkins-ci.org/display/JENKINS/Rebuild+Plugin
も一回Buildします。
これ、何が便利かというと、その時に実行したパラメータでもう一回Buildできるってとこ。
別のJobから起動されるJobとかGitHubのPullRequestをフックに動かしてるやつとか、渡ってくるパラメータが一杯あったり動的に変わるやつを、手動で動かさないといけない時とかに便利です。
結果通知
ChatWork Plugin
HipChat,[Slack](lack Notification Plugin)もありますが、弊社はChatwork。
日本語なのは便利じゃないですか。
Twilio Notifier Plugin
もうホントにクリティカルなJobの結果はメールでもチャットでもなく、もっとしっかり把握したいという人向け。
なんと電話がかかってきます。
電話口でメッセージやステータスも読み上げてくれます。
Twilioのアカウントが必要なので、事前に取得しておきましょう。
その他
Metrics Disk Usage Plugin
JenkinsのDisk容量をかんしてくれます。
Buildを何度も回してるとローカルに成果物が一杯溜まってしまいがち。
これが入っていれば、なんのプロジェクトが容量をくってるのかも、一目瞭然。
Build Trigger Badge Plugin
ビルド履歴の横に、何をトリガーにして実行されたかのバッチが表示されます。
先週に手動で実行した時の条件でももう一回実行したい、みたいな時、履歴を追うのが楽ちんでいいですね。
最後に
Jenkinsにかぎらず、便利なツールが使いこなせるのってカッコイイですよね。
自分もJenkinsを使いこなせているとはまだまだ言えないので、これからも精進したいと思います。
CYBIRD エンジニア Advent Calendar 明日は、CYBIRDエンジニアNo1イケメン(俺調べ)の@sgtさんの「UIWebViewに甘んじてた俺がWKWebViewというパンドラの箱を開けた話」です!
楽しみですね!