<< August 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
<< 「レガシーコード改善ガイド」は久しぶりに読んでみたい技術本だ | main |

スポンサーサイト

0

    一定期間更新がないため広告を表示しています

    スポンサードリンク * - * * - * - * - -

    第1回大阪Jenkins勉強会に参加してCIの導入について学ぶ

    0
       第1回大阪Jenkins勉強会の参加の動機

      最近はコーディング以外の作業を自動化することが注目されているようで、私もCI(継続的なインテグレーション)に興味を持ち始めた。
      今の現場ではTracLightningを使っていてHudosonも入っているが使った事は無い。「コミットの度に自動的にビルドができて便利ですよ」という人もいたが、当時は案件も忙しくその機能がもたらす価値も理解できずにいた。
      だが、CIを導入すると何が変わるのかを学ぶため、勉強会に参加した。


      発表内容

      @kiy0takaさん Jenkins入門 30分
      @yugolfさん 甲賀流Jenkins活用術 30分
      @shinsukeodaさん .NET なプロジェクトでも Jenkins を使ってみた 15分

      LT
      @irofさん
      @yohhatuさん
      @kohsukekawaさん


      @kiy0takaさん Jenkins入門 30分

      Jenkinsの初心者向けの紹介とその導入のデモが行われた、
      そのデモにより、Jenkinsの導入がいかに簡単で、30分もあれば導入できることが良くわかった。
      いくつか導入方法があるが、Javaコマンドで java -jar jenkins.warのコマンド一発でも導入できるし、warファイルをWebサーバーにでデプロイするだけでもいいし、また、各OSプラットフォームごとにインストーラが用意されている。
      必要なJDKなどのライブラリも、Jenkinsの管理画面からGUIで簡単に設定することが可能となっている。
      今の現場ではTracLingtningなのでこの問題はクリアしているが。

      また、導入後の実際の使い方についても簡単なデモがあった。
      Jenkinsにジョブを登録しておけば、そのジョブによってAntやMavenなどのビルドツールを自動起動ができるようになる。
      Cronのように定期的に起動することもできるし、一定時間おきに連携するSCM(Subversionなど)を監視してコミットがあればジョブを起動するなど、また、手動で起動することもできる。

      ジョブを起動すると登録されたジョブが実行され、たとえばビルドなどが自動的に実行され、ビルドでエラーが発生した場合はメールなどで自動通知される。ジョブにはJUnitの自動テストやデプロイ作業もさせることができるらしい。

      ジョブでは他にもいろいろな事ができるが、基本的なこの仕組みを利用することで、コーディング以外の様々な作業を自動化することができるらしい。
      継続的なインテグレーションがもたらす効果は冒頭で説明があったが、そのツールの導入がいかに簡単で敷居の低いものかがとてもよくわかった。

      私の今の現場の話だが、JUnitが管理されておらず、仕様変更などでいつの間にかFailが発生していても、そのままにされていることも少なくない。手動による試験にはコストがかけられているのだが、JUnitのメンテナンスまでは保障されていない。
      そういう状況なので、Jenkinsを導入するといきなりエラーメールが発生しまくることが想像できる。
      導入の際には、そこだけは気をつけなくてはいけない。登録するジョブには気を付けて、自動テストについては少しずつメンテナンスが保障されている範囲を整備していくしかなさそうだと思った。


      @yugolfさん 甲賀流Jenkins活用術 30分

      TISで開発されている社内フレームワークのXenlon(神龍)の開発にどのようにJenkinsが利用されているかの実践的な活用事例の紹介。
      3カ月に1回というリリース周期の開発の為には、Jenkinsがなければとても回らないと、その価値が強調されていた。

      Jenkinsのジョブは、日中・夜間・リリース前で役割を分けて導入されている。
      日中のジョブは15分おきSCMをポーリングで監視して実行され、リアルタイム性の高いものが登録されている。たとえば、ビルドやJUnit、CheckStyle、他、JavaのStatic変数が危険な使われていないかのチェックをするプラグインなども登録されているらしい。
      夜間は、特に時間のかかるもので定期的に行うべきものが登録されている。たとえば、各DBプラットフォームでのDBテスト、カバレッジレポートやJavaDocの生成、セキュリティチェックツールの実行など。
      リリース前は、任意のタイミングで手動でおこなうジョブが登録される。リリース作業をシェルで自動化されたものなどがジョブに登録されているらしい。

      最後にCIの効果として、品質の可視化、問題の早期発見、コミット問題の解決の短縮などがあげられていた。



      @shinsukeodaさん .NET なプロジェクトでも Jenkins を使ってみた 15分

      .NETでのJenkins導入について気を付けならなければならない事など導入事例が紹介された。
      私は、.NETを触る機会がなかったので、FxCopやMSBuildは初めて聞いたものだが、.NETならではの苦労が語られた。
      MSDNやVisualStudioは高価だが、無料のツールを使った場合のJenkins導入事例について語られていた。

      最初はGUIはサイコーだとJenkinsのGUIを押していたが、最後の最後でやっぱりCUIがサイコーだと落とされた。
      つまりは、GUIは設定・導入がとても便利だが、自動化には向いていない。
      GUIで導入・設定できて、作業の自動化にむいたCUIの両方に対応していることが大事だということが語られた。


      ライトニングトークス

      @irofさんは、CIを導入したことでコードが腐らないことを上げられていた。
      @yohhatuさんも同じメリットを大阪の551の蓬莱のCMチックにCI導入の効果が語られた。
      「私の環境では動いていた」で取られる時間ほどあほらしいものはないと思った。

      最後のLTでは、@kohsukekawaさんによる、HudosonからJenkinsのアップグレードがいかに簡単なものかデモを交えて紹介された。
      名前以外(あとはロゴ?)の中身は何も変わっていないそうで、デモを参考にすれば簡単にHudosonからJenkinsに切り替える事ができることが示された。動画によるビデオレター的なTLで斬新だった。


      まとめ

      勉強会に参加して、「価値はありそうだが、JUnitのメンテナンスをやらないといけないし、誰かが導入したいといまではいいかな」と思っていたのが、「Jenkinsが導入できるよう現場に掛け合いたい。他の人がやりたいというのは待ってられない」と気持ちが変わった。

      導入が簡単だということも理由の一つだが、@irofさんの言う「コードが腐らないこと」がとても大切なことだと思える。今の現場ではJUnitはメンテナンスされていないので、せっかく作っても時間がたつとともに仕様変更などが入り、メンテナンスされないテストは価値がなくなってしまう。
      また、各メンバーのローカルのDB設定でないと動かないテストがあったりすると、下手動かすとデータベースのデータを壊す事故も起こりえる心配があり、他人が作ったテストを実行するのも気を使うような状況になっている。
      CIを導入することでコミットの度にチェックされるようになれば、それを防ぐことができ、結果、JUnitの価値を高める事ができるはずだ。

      他、今の現場ではビルド作業やデプロイ作業は、何人かで担当して定期的に行っているので、こういった作業も自動化することができるというメリットももちろんある。
      また、デプロイ環境は、リリースのタイミングでどこまでのリビジョンでデプロイされているかが管理されているので、その運用に支障をきたさないように気を使う必要もある。今の受け入れテスト用のデプロイ環境と、CI様のデプロイ環境を2種類、用意する必要はあるのだろうか。

      今の現場に導入するには、少しづつ自動テストをメンテナンスしていく事と、受け入れ環境とのデプロイ環境との調整、他、現行リリースの障害管理用のブランチと次期リリース管理用のトランクで枝分かれしたソースをCIでどう管理していくかなどの課題が残っている。個人的には自動テストの価値を高める事が悲願だが、プロジェクト的にも不要な作業が自動化でき、コミット時の問題が短縮される効果もあるので、なんとか導入にこぎつけたいと心を改めた。


      最後に、本日の貴重な導入事例を共有する勉強会の場を設けてくださった、講師・運営の方々に感謝申し上げます。貴重な機会をありがとうございました。

      よっしー * システム開発案件 * 01:48 * comments(0) * trackbacks(0) * - -

      スポンサーサイト

      0
        スポンサードリンク * - * 01:48 * - * - * - -

        コメント

        コメントする









        トラックバック

        このページの先頭へ