はじめに
DevOpsをはじめようと思っていますか?ごぞんじの通り、DevOpsにはCI(継続的インテグレーション)ツールは欠かすことができない存在です。現在のところCIツールにはいくつか選択肢がありますが、最も普及しているのはJenkinsでしょう。2016年5月には、マイクロソフトとのパートナーシップが発表され、CIツールとしての地位をさらに高めました。CIツールを選ぶならまずはJenkinsから検討するとよいでしょう。
この記事では、CIツールの選択で迷っているエンジニアの方のために、Jenkinsの紹介や継続的インテグレーション(CI)、継続的デリバリー(CD)などについてお伝えしていきます。ぜひご一読して、CIツール選択の参考にしてください。
Jenkinsとは?
Jenkins公式サイト:https://jenkins.io/
Jenkinsは、Javaで作られているオープンソースのCI(継続的インテグレーション)ツールです。もともとはHudsonという名称でしたが、オラクルとの商標登録問題が起こった際にプロジェクトがフォークされJenkinsという名称に改められました。ちなみに、Jenkinsは英国執事をイメージしています。Jenkinsのロゴからもそれは明らかですね。Jenkinsは非常に簡単にインストールすることができるCIツールで、設定も簡単です。GitやSubversion、Mercurialなど主要なバージョン管理システムに対応しています。
プラグインで機能が拡張できることが特徴のひとつです。現在のところ1400以上のプラグインが提供されています。豊富なプラグインがJenkinsを単なるビルドツール以上の存在にしているのです。コミュニティにより精力的に開発が続けられており、2016年4月にはバージョン2.0がリリースされDSL(ドメイン特化言語)によるパイプライン処理が可能になりました。将来にも期待が持てるCIツールですね。
継続的インテグレーション(CI)
継続的インテグレーション(CI)は、アジャイル開発やDevOpsでは欠かすことのできない要素です。簡単に言いますと、開発が進んだ時点でビルドするのではなく、コードをコミットするたびにビルドを行うということです。そうすることで、不具合を早期に見つけることができ、問題が複雑化することを防ぐことができます。また、属人化しやすいビルド作業が自動化され、誰にでもできるようになります。これは頻繁にビルドをすることになる開発手法では重要なことです。
継続的インテグレーション(CI)を実現するには、専門のCIツールを利用することをお勧めします。
継続的デリバリー(CD)
Jenkinsは、継続的インテグレーション(CI)だけでなく継続的デリバリー(CD)も実現できるCIツールと言えます。CDは、「コミット→ビルド→テスト→デプロイ」という流れを自動的に行うことで実現します。つまりこの流れをCIツールとしてのJenkinsおよびAnsibleなどの関連ツールを組み合わせて作り上げるのです。CDの手法としては、ブルーグリーンデプロイメントやイミュータブルインフラストラクチャーがあります。いくらテストを行っているとはいえ、いきなりプロダクション環境にデプロイするのは不安なもの。いずれかの手法を取り入れたほうがよいでしょう。
CIツールとしてのJenkinsのメリット
作業の属人化を防げる
開発時にはいろいろな作業が発生しますが、ビルドにかぎらず放っておくといつのまにか属人化してしまっていたりします。そういった作業は、Jenkinsのジョブとして自動化することで誰にでも実行できる作業になります。
旧バージョンも管理できる
ソフトウェア開発では、何度も機能追加や修正が繰り返され、多数のバージョンが生み出されます。時には旧バージョンを使って検証しなければならないこともあるでしょう。そんなとき、Jenkinsでビルドしていれば、管理されている旧バージョンを簡単にダウンロードすることができます。
情報が得やすい
ユーザー数が多くコミュニティが活発なため、情報が得やすく問題が起こったときにも対処しやすいです。また、書籍も多数出版されており、ノウハウを得るのも比較的容易になっています。新興のCIツールではこうはいかないでしょう。
CIツールとしてのJenkinsのデメリット
Jenkins職人がうまれる
本末転倒なことかもしれませんが、属人化を防ぐJenkinsそのものが属人化しやすい作業でもあります。「あの人じゃないとジョブを作れない!」というのはよくあることです。いわゆるJenkins職人と呼ばれる方ですね。いずれにしても属人化を100%排除することはできないのではないでしょうか。
よくわからないジョブが増える
ある程度長くJenkinsを使っていると、まったく使われないジョブがそのまま残っていたり、作った本人以外にはよくわからないジョブがあったりします。不要になったジョブはこまめに削除するようにしましょう。また、ジョブを作成する際には詳しい説明を書いておくと作った本人にもわかりやすくなります。
スマホからJenkinsをチェックしよう
Jenkinsアプリページ:https://play.google.com/store/apps/details?id=com.mobilabsolutions.jenkins.app&hl=ja
非公式ですが、Android向けのJenkinsクライアントが提供されています。スマホやタブレットからビルドやテスト結果を表示したり、ジョブを監視したりできます。どこにいてもJenkinsが気になってしょうがない方はインストールしてみましょう。
まとめ
Jenkinsは最も有力なCIツールですが、作業が属人化しやすいなどいくつかデメリットもあります。もしJenkinsの他にCIツールを検討するとしたらTravisCIやCircleCI、Werckerをあたってみるとよいでしょう。こちらはクラウドサービスとなっており、自前でサーバーを用意する必要がありません。CIツールをモダンな環境で作りたい方におすすめです。とはいえ、今のところJenkinsに人気があるのも確か。どれも無料で試すことができますから、実際に使ってみてお気に入りのCIツールを見つけてみましょう。あなたはどのCIツールを使いますか?
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments