「入門Jenkins」を執筆しました

「入門Jenkins」を執筆しました

こんにちは。
Aimingでプログラマーをしています西川です。

入門Jenkins

この度Jenkinsの実践活用例を集めた「入門Jenkins」という本を執筆させていただきました。今回はその内容についてお話したいと思います。


入門Jenkinsの内容

私はウェブ開発を担当しているチームのJenkins全体を構築、運用しています。言語はRuby が主であり、JavaScriptが続きます。
今までのJenkinsの書籍や活用例の紹介はJavaによるものが多く、他の言語のものはあまりなかったように思えます。
入門Jenkinsではその点を打破したく、ウェブ上に散在していたRubyでのJenkins活用例と、私の経験をもとに執筆させていただきました。入門Jenkinsではいくつかの実践的なJenkinsの活用例を具体的に執筆しています。

私が執筆したのはRailsでの活用例で、単独の活用例を紹介しているうちではもっとも多くページを割いていただきました。
周りでの話を聞くと、Jenkinsなど、CIをやりたいけどどうすれば良いのか分からない、ということをよく聞いたので、前から順番に実行すれば同じ結果にできるようにと記載するコマンド、例に気を配りました。
執筆を始めてからJenkinsのバージョンによってはプラグインとの相性があることも分かり、将来にも問題なく実行できるよう、推奨バージョンを明記し、サポートサイトでは推奨バージョンをダウンロードできるようにしました。

私の執筆した章では順に内容を実行していただいていくことにより、RailsアプリケーションをJenkins上でテストする方法から、大量のテストに対応するための分散ビルドを用いたCIサーバー群をセットアップできるようになります。
私はCIを始めた方々のうち多くが直面するテストの量や速度の問題からくるビルド時間の長時間化に対応することは必須であると考えていたこと、今まで私の読んだJenkinsに関する書籍は分散ビルドに関する解説に重点がおかれていなかったことはこれからの書籍への課題だと思っており、今回分散ビルドをするためのサーバー群の実践的な構築方法を執筆できたことは、本書執筆における一番の成果だと思っています。

他にも、Android開発で使われ、実績がありながら日本語での紹介事例のほとんどないGerritとJenkinsの例(数少ない例の一例が弊社ブログにあります)や、Android開発での例、さらにはPerlでの活用と他では見られない活用例が載せられています。著者はそれぞれ現場での経験を本にしており、本書で得られる知識は、参考にされる皆様の現場でもきっと役に立つことと思います。

AimingでのJenkins

Aimingでは、本書に書かれた内容を基本的に実行した結果のCIサーバーを運用しています。
現在は10台のサーバーを用いてCIサーバー群を構築しています。テスト、メトリクス分析、自動デプロイという流れを行なっています。最初にメンテナンスを始めた頃は実行が異常に遅いプロジェクトもあり、Jenkinsの結果通知を待って受け取るのが億劫でした。しかし、メンテナンスや再構築、分散ビルドを取り入れた結果、とあるプロジェクトではビルド時間を5分の1、別のプロジェクトでは最初の通知まで10分の1、全体のビルド時間も3分の1にまで削減するなど、劇的な改善を行うことができました。
ビルド時間の短縮とビルドパイプラインの見える化により、開発陣のテストに対する意識も変化し、今までレッドになることが当たり前のようになっていた難しい部分にも改善が見られるようになりました。
また、Arduinoを用いた手作りのXFDを作成したり、IRCに対する通知や、試験的に導入してみたチャットシステムへの通知を導入してみるなど、より早く、分かりやすいフィードバックを得られるよう日々改善を試みています。

Aimingでの活用経験の詰まった「入門Jenkins」を是非よろしくお願い致します!