Jenkins

Jenkins”だけ”でほんとうにできること

More than 1 year has passed since last update.


はじめに

グーグル先生に「Jenkinsとは」って聞いてみると、大体、

「継続的インテグレーションですごい!」

「自動化出来て効率アップ!」

「ビルド、テスト、デプロイまで自動で出来る!」

・・・という情報ばかりで、「実際使えるの?どうやって使うの?」って部分が見えてこないので、実際に使ってみようとした結果です。


インストールして、1日触ってわかったこと

「これ、ただのcronですやん・・・」


もう少し詳しく

色んなサイトで語られている「便利」を具体的に落とすと、

自動化出来る⇒〇

ビルド自動化⇒△

テスト自動化⇒△

評価自動化⇒×

デプロイ自動化⇒△

自動化出来る⇒〇 Jenkinsはいろんなトリガをもった便利なcron/タスクスケジューラみたいな感じで、外部連携も得意っぽいので(頑張れば)色々自動化できる。


↓こんな感じでcron風に定時起動させたり(定期的に実行)、他のジョブの後に実行するように設定してジョブ連携させたり(他プロジェクトの後にビルド)、ポーリング監視してソースコードの更新があったら動くように(SCMをポーリング)、とか設定できる

image.png

↓Jenkinsの中にシェルやバッチを書いて実行させることも出来る。AntやMavenの呼び出しもここから。

image.png





ビルド自動化⇒△ 基本的にant,MavenといったビルドツールをJenkinsが呼び出して自動化するという方法が主流(Jenkinsはただの実行トリガ)。makeファイルやコンパイルファイルを自前で作って、Jenkinsに設定した起動条件に当てはまれば自動実行する、というようなことをビルド自動化っていう風に言っているだけ(たとえば定時に実行する、ソースファイルに変更が入ったら実行する等)。




テスト自動化⇒△ JUnit等のテストツールをJenkinsが呼び出して自動化するという方法が主流(Jenkinsはただの実行トリガに過ぎない)。テストプログラムを自前で作って、Jenkinsに設定した起動条件に当てはまれば自動実行する、というようなことをテスト自動化っていう風に言っているだけ(たとえばビルドジョブが成功したら実行する、等)。




評価自動化⇒× Cobertura、Checkstyle、FindBugs、JavaNCSSなどの外部ツールを起動し、その結果を受け取ることはJenkinsで出来る。Jenkins本体に評価ツール等があるわけではない。


↓ジョブの実行結果を一覧で見るぐらいは出来る

image.png

↓ジョブの実行結果コマンドを見ることも出来はする

image.png





デプロイ自動化⇒△ コピーやムーブのコマンドを書いたバッチやシェルを、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

↑こことかほんとひどい