#はじめに
グーグル先生に「Jenkinsとは」って聞いてみると、大体、
「継続的インテグレーションですごい!」
「自動化出来て効率アップ!」
「ビルド、テスト、デプロイまで自動で出来る!」
・・・という情報ばかりで、「実際使えるの?どうやって使うの?」って部分が見えてこないので、実際に使ってみようとした結果です。
#インストールして、1日触ってわかったこと
「これ、ただのcronですやん・・・」
#もう少し詳しく
色んなサイトで語られている「便利」を具体的に落とすと、
自動化出来る⇒〇
ビルド自動化⇒△
テスト自動化⇒△
評価自動化⇒×
デプロイ自動化⇒△
自動化出来る⇒〇 Jenkinsはいろんなトリガをもった便利なcron/タスクスケジューラみたいな感じで、外部連携も得意っぽいので(頑張れば)色々自動化できる。
↓こんな感じでcron風に定時起動させたり(定期的に実行)、他のジョブの後に実行するように設定してジョブ連携させたり(他プロジェクトの後にビルド)、ポーリング監視してソースコードの更新があったら動くように(SCMをポーリング)、とか設定できる
ビルド自動化⇒△ 基本的にant,MavenといったビルドツールをJenkinsが呼び出して自動化するという方法が主流(Jenkinsはただの実行トリガ)。makeファイルやコンパイルファイルを自前で作って、Jenkinsに設定した起動条件に当てはまれば自動実行する、というようなことをビルド自動化っていう風に言っているだけ(たとえば定時に実行する、ソースファイルに変更が入ったら実行する等)。
テスト自動化⇒△ JUnit等のテストツールをJenkinsが呼び出して自動化するという方法が主流(Jenkinsはただの実行トリガに過ぎない)。テストプログラムを自前で作って、Jenkinsに設定した起動条件に当てはまれば自動実行する、というようなことをテスト自動化っていう風に言っているだけ(たとえばビルドジョブが成功したら実行する、等)。
評価自動化⇒× Cobertura、Checkstyle、FindBugs、JavaNCSSなどの外部ツールを起動し、その結果を受け取ることはJenkinsで出来る。Jenkins本体に評価ツール等があるわけではない。
デプロイ自動化⇒△ コピーやムーブのコマンドを書いたバッチやシェルを、Jenkinsから起動すればデプロイ自動化を実施できる。って感じ。ただし、そのバッチやシェルは一から自前で作る必要あり。
※Jenkinsを便利に使うためにはいろんな外部ツールを入れないといけないので、基盤屋さんからすれば「なんでもかんでも入れんじゃねぇ!」って怒られるかなと思います。管理対象物が増えるので。
#結論
「これ、ただのcronですやん・・・」(2回目)
もちろん、自動化するための設定を作ってしまえば、あとは簡単なGUI操作で何億回でもJenkinsが再実行して、その結果を連携してくれます。そこは超便利でコスト抑制になると思います。
ただし、あくまで自動実行までの大量のお膳立てを、ほぼ手作業で実施することが大前提になります。もちろん、そのお膳立て(+Jenkins側の実行設定)はヒトが管理するので、そこの属人化を避ける運用も考える必要があるかと。
なので、「何でもかんでも出来るすごいやつ」って考え方は早々に修正すべきと思います。思いました。(そうさせるウェブサイトが多すぎるのも問題ですかね)
参考:
Jenkins実践入門
http://gihyo.jp/book/2011/978-4-7741-4891-5
オープンソースの自動テストツール/Jenkinsとは
https://www.ossnews.jp/oss_info/Jenkins
↑こことかほんとひどい