O'Reillly Jenkins本に書かれていた「自分の組織への継続的インテグレーションの導入」に同意出来た

現在の職場でローカルVMにJenkins入れて自動ビルド&自動テストを自分勝手に実装していたら評価されて会社のサーバにJenkinsのインストールとジョブ構築を依頼されたのでO'ReillyのJenkins(カエル本)買って読んでる。現在は5章あたりを読んでいる。

1章の「自分の組織への継続的インテグレーションの導入」を読んで、私自身が過去のCIツール構築の際に歩んできたことと同じことが書かれていて気持ちが回顧したので久しぶりにブログを書きたくなった。

継続的インテグレーションの導入は以下のような段階を経る。

  1. 第1段階−ビルドサーバーがない
  2. 第2段階−ナイトリービルド
  3. 第3段階−ナイトリービルドと基本的なテスト
  4. 第4段階−メトリクスの導入
  5. 第5段階−テストへのさらなる真剣な取り組み
  6. 第6段階−自動受け入れテストと、さらなる自動化デプロイメント
  7. 第7段階−継続的デプロイメント

私は第3段階までを実践したことがあって、第7段階まで実践しているチームを隣で見ていたことがある。

第1段階から第3段階までの実装は簡単

私の経験を書くと、2010年は第1段階のビルドサーバがない環境で開発を行なっており、2011年から第2段階のナイトリービルドを実践しはじめた。 また、このときからTDDを実践しはじめて、TDDによって作られたテストをbashとcronを使ってナイトリービルドしていた。結果はチームのMLに飛ばして毎朝結果をチェックして朝会でチームメンバーと議論していた。 ビルドサーバのない段階からナイトリービルドと基本的な自動テストの導入はTDDを実践していれば難しいことではないしOSのスケジューラを使えばすぐに導入できるお手軽な方法だと思っている。

第7段階まで実装していたチーム

第4段階以降は私自身に構築した経験はない。他のチームが実践していたそれを見たり聞いたりしていただけである。 第7段階までの実装は長い期間をかけており困難を極めていたようだが実装後はうまくいっているようには見えた。 実装以前は月に2度程度しかリリースしていなかったが実装後は毎日何かしらリリースをしていた。顧客やパートナーに素早く価値を提供できるというのはとても良いことだと思う。 そのチームは第4段階のメトリクスの導入は実践していなかったようだったが多分ソースコードが属人化しておりメトリクス自体に意味がなかったからだろう。何を重視するかによるがこれはあまり重要なことではない。

個人的に目指したいところ

  • ブランチのコミットをポーリングして自動ビルド、ブランチ毎にDBを作成してテスト
  • コードカバレッジの計測の自動化
  • コーディング規約チェックの自動化
  • 受け入れテストが自動化されておりコミュニケーションツールとなること
  • ワンクリックデプロイ
  • 複数台サーバを用いたテスト実施によるテスト結果の素早いフィードバック

Jenkins

Jenkins