(Photo by:Dirk Haun)
Jenkinsの実績はとても多く、導入実績を不安があるツールとはだれも感じていないと思います。登場から今年2015年に至るまで、おおよそ10年間で「CIツールと言えばJenkins」と認知されるまでになり、ウェブアプリ開発、業務システム開発、ゲーム開発と広い用途で利用されています。
2005年に前身となるHudsonが登場し、2007年頃から話題になり始めてから、2008年のJava OneでDuke’s Choice Award開発者ソリューション部門を受賞、2011年には開発者がJenkinsでGoogle-O’Reilly Open Source Awardを受賞しています。
クックパッドでの事例
レシピ検索サービスのクックパッド(http://cookpad.com/)ではrspecのテスト実行にJenkinsを利用しています。テストを分散化して実行するようにしており、テスト実行順序の最適化、長時間かかるテストの投機的実行などで高速化を実現しています。
CIでテスト・アセット生成・デプロイ・通知の自動化を行っています。
詳細はこちらのURLをご確認ください。(https://speakerdeck.com/takai/how-we-use-jenkins)
グリー株式会社での事例
Jenkinsを使ってアプリ開発のビルドを自動化した事例です。ビルドに属人性があると、修正反映したビルドを依頼し辛い状況になります。また現行の作業に割り込まれてビルドする事になるため、作業効率にも影響がでます。
各種指標(静的マトリックス)とリリース基準を組み合わせて、チーム内での合意とワークフローの変更を経て開発プロセス改善が行われています。
詳細はこちらのURLをご確認ください。(http://labs.gree.jp/blog/2013/12/9031/、https://speakerdeck.com/okazaki/jenkins-at-gree-two-and-a-half-years)
iOSアプリのビルド自動化の事例
Chaione社がNS Screencasts(http://nsscreencast.com/)を開発した際の事例です。コミットされるタイミングでビルドを走らせます。
RubyのrakeでXcodeプロジェクトのビルドを行うxcodebuild-rb(https://github.com/lukeredpath/xcodebuild-rb)を利用してコマンドラインベースで自動ビルドを実現しています。署名はJenkinsのキーチェーンに証明書の鍵をインポートしています。
iOSやAndroidアプリ開発のCIツールにJenkinsが採用されているケースを多く見ます。またアプリ開発特有のビルド手順をJenkinsから行う方法も多く紹介されています。
詳細はこちらのURLをご確認ください。(https://speakerdeck.com/subdigital/ios-build-automation-with-jenkins)
(Photo by:Jane Quigley)
IBMとWebSphereでの事例
IBM社でのWebSphereを使ったエンタープライズ開発でJenkinsを使った事例です。
開発者、インフラ担当、テスター、ビジネスアナリストなど様々な役割に分かれたスタッフが参加しており、環境もローカル環境、インテグレーション環境、テスト環境、検証環境、本番環境と分かれています。
Jenkinsをソースコードリポジトリとのインテグレーション(subversion)、ビルド、デプロイに利用しています。すばやく作れるビルドパイプラインで、インストールと設定が簡単な点が評価されています。
プロジェクトの依存関係管理にはMavenを利用しており、JenkinsとMavenでデプロイを実現しています。
詳細はこちらのURLをご確認ください。(https://www.cloudbees.com/sites/default/files/2014-0618-Boston-Sam_Alexander-Using_Jenkins_to_Build_Websphere_Apps.pdf)
コンシューマーゲーム開発での事例
マルチプラットフォーム、多言語対応のゲーム開発のビルド、中間データ生成、パッケージング、テストをJenkinsで行う事例です。
コンシューマーゲーム開発ならでは実機(PS VITA)を使った中間データ生成を並列実行で短縮しています。
入力項目にランダムな値を入力する形でモンキーテストを自動化する事は多いですが、この事例ではAIを準備してモンキーテストを実行しています。
詳細はこちらのURLをご確認ください。(http://www.slideshare.net/swiftnest/jenkins-43394510)
GitHub専用のJenkins DotCi
DotCi (https://github.com/groupon/DotCi)はJenkinsをGitHubと連携するために特化させたディストリビューションです。Dockerベースで環境構築されているため、Jenkins+GitHub+Dockerが基本構成です。
GitHubを利用しているプロジェクトではDotCiを導入するとお手軽にCI環境が手に入ります。
公式サイト内のJenkinsの使い方
Use Jenkins(https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins
)ではプロジェクト種類別での使い方、IDEなどツールとの連携方法、デーモン(サービス)として動作させる方法など、目的別でJenkinsを利用する方法が説明されています。
これから構築しようとしている環境に似た事例が、公式サイト内の使い方で説明されているかも知れません。
Jenkins プラグイン一覧
プラグイン一覧(https://wiki.jenkins-ci.org/display/JENKINS/Plugins)を見ると、多くの外部サービスやツールとインテグレーションできる仕組みが既にあるのが分かります。
例えば、プロジェクト管理ツールのJIRAとJenkinsを連携させる事例を探す場合は、直接JIRAプラグインの説明(https://wiki.jenkins-ci.org/display/JENKINS/JIRA+Plugin)を見る方が早く理解できるかも知れません。
(Photo by:Mark Waite)
まとめ
実績面でJenkinsを業務で使うことが問題になることはないと思います。CIツールの第一選択肢として名前が挙げられます。
セキュリティ確保やユーザーの権限管理といったアクセスコントロールは運用側で行う前提ですので、誤操作が起こらないようにする事前の設計が求められます。
日本語ドキュメントが豊富で、国内でJenkinsの利用経験者も多いため困ったときに何とかなる環境があります。
JenkinsはあくまでCIツールであって、大規模開発など特定の目的に特化して開発されているツールではありません。そのため利用目的に合った形でインフラ環境を整備するコストが必須になります。
機能面では仕組みがシンプルな事、Javaで開発されており各種OSで動作する、プラグインを利用して柔軟に問題への対処ができます。良くありがちな、「この機能がないから」「この環境に対応できないから」プロジェクトで導入できないと言った判断がされることは少ないと思います。
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments