第3回Jenkins勉強会に参加してきた

前回第2回から約3ヶ月、第3回目のJenkins勉強会です("Hudson"の名が取れた)。
そして今回のテーマは「LL言語プロジェクトにおけるJenkinsの運用について」。



Jenkins現状報告

Jenkins(旧Hudson)創始者である川口さんによるJenkins現状報告。
当初の予定(こくちーず募集概要)ではこのセッションについては記載は無かったのですが、開催前にとある事件が起こった事もあり急遽初っ端に行われることに。

まずは、『離婚』(Hudson/Jenkins分割となった事件〜分割に至るまで。川口さんはこの事象について『離婚』というキーワードを用いてユーモアな解説を交えて進めていました)後のJenkins・Hudsonの活動状況等について。

※『離婚』に関する記事

  • Hudsonの殆どの開発者はJenkinsへ
  • コミット数比較 Jenkins 733 vs 172 Hudson
    • Jenkinsの60近くは川口さん一人によるもの(スゴイ!しかし会場では笑いの渦w)
  • "離婚騒動"による宣伝効果で、分割後にプル・リクエストも増えた
  • リポジトリGitHubに移行/496リポジトリ
  • プラグインの開発者もJenkinsへ
  • 25のトッププラグインのうち、21はjenkins(残る4はHudsonだが、コミット無し)
  • "離婚"後、Jenkinsは40の新しいプラグインを追加(hudsonは1)
  • Jenkinsは互換性を重視した継続的な開発を行い、ユーザが必要な機能やバグ修正に対して今までと同じやり方で対応、バグ修正・PFRを届けている
  • ユーザーMLのトラフィック数 Jenkins 1280 vs 259 Hudson
  • Jenkinsのダウンロード数:8132 war, 2733 deb, 1237 rpm, 1320 zip / Week
  • チケット全体のアクティビティについては、分裂騒動のあった2010年秋〜末には若干の減少があったものの、概ね向上。全体性を損なうことなく今に至る

…とまぁ、Jenkinsの圧勝(笑) 『Hudson』という名義は引き継いだもの、プロジェクトとしての体は散々な形となっている印象です。


そして直近で発生した『事件』について。『Oracle,Hudson の Eclipse 財団への移行を提案』というアクションが日本時間でのG.W終わりかけの頃にありました。

アクションの詳細は上記記事参照。『Jenkinsは彼等(Hudson)の想定よりも成功した』状態となったため、Hudson側が対抗策として打ち出してきた格好に。

これに対して反応は様々。ユーザーの間からは合流を望むが声強かったり、その一方でeclipseOracleの手助けをするのを嫌う声も多かったり。双方の開発者の反応はもっと冷ややかであるそうです。

Jenkinsコミュニティの反応も様々あり、合流の条件を探りながらも一方でApacheへの移管を望む声も出て来たり。全体的には『統合は難しいのでは』…という雰囲気の模様でした。

RubyによるJenkinsプラグイン開発(仮)

上記『現状報告』からそのままの流れでこちらのセッションに突入。今回はJenkinsコミュニティメンバーであるCharles Lowell (cowboyd)という方が川口さんと協力して進められているRubyによるJenkinsプラグインに纏わるお話です。

  • 野望
    • RubyでもっとJenkinsを使いたい/RubyでJenkinsを拡張したい
    • しかもRubyの知識だけで。
    • Javaで動いていると言うことは重要ではない。最終的には『Javaって何?』という人達を取り込みたい。
    • 取り込みたい層・・・[Java開発者]と[Ruby開発者=潜在的ユーザ]の重なる部分の層。
  • Win-Winの関係
    • Jenkinsの開発者が増える
    • Ruby関連のプラグインが増える
    • JenkinsがRubyにとって魅力的になる
    • Jenkinsのユーザが増える
      • Rubyで出来るのなら他の言語でも出来るのでは?(候補:Python)
      • ソースでプラグインを配布出来れば変更も容易。
  • ビューについて
    • 現状、ERB+既存のtaglibを呼ぶレイヤーを実装
    • これなら書く気になりますか?何なら良いですか?

※この件に関しては、セッション中も意見のやり取りが成されていました。

  • まだできてないところ
    • Rakeタスク
    • ケルトン生成
    • パッケージング・デバッグ
    • Railsのようなコード生成とか
    • ラッパの自動生成
      • 見通しはついたけど完成はまだ

まだまだ走り始めたばかりのプロジェクトですが、ここまでの過程で川口さん的には『モノになる!』と踏んでいるようです。今後の展開が楽しみですね。

また、このアクションには誰でも参加出来る模様です。スライドで紹介されたURLは書き留め切れませんでした(後日スライドで確認するとしよう)…。Javaの知識もJenkinsの知識も不要、毎週金曜10:30から週一でハックセッションも実施中。英語が出来なくても大丈夫なようです。興味のある方はぜひトライしてみては。

Jenkinsと一緒にTracプラグイン開発 -UT/IT 自動化のコツ

NTTデータの中の人で、『SDワークベンチ』と呼ばれる開発支援ツールの開発のお話。"ワークベンチ"というワードは聞き慣れないですが、開発標準的な意味合いなんですかね。

 それでも少しずつ形になってきた。例えば、プロジェクト管理手法の社内標準「PMワークベンチ」は今年10月から原則すべての新規プロジェクトに適用を義務付けるところまできた。

 PMワークベンチを使うと個人差がなくなり、安定的なプロジェクト管理ができる。進捗が見えるので仕事量の負担が偏らないし、過去のデータと比較できる。結果的に不採算案件の減少につながる。

 開発手法の社内標準も作り始めている。「SDワークベンチ」と呼ぶもので、中国・北京にある北京NTTデータが中心となって開発を進めている。今はモデルプロジェクトで先行適用をしている段階だ。ほかにも保守用のワークベンチを作る計画もある。

togetter(後述)のつぶやきから情報を拾ってみると、『SDワークベンチ = NTTデータならではの機能拡充を施した、trac/subversion/jenkins オールインワンパッケージ』という定義のようです。

開発にあたり、品質を確保するために一定以上のテスト密度が必要→ゼロ機能リリース(開発の最初に機能は無いが、リリース出来る状態を用意)を早期から実現させる事で移行のテスト作業をスムーズにさせたり、ファイル構成、各種プラグインとの連携等々、結構な情報量での解説・説明となっておりました。後でじっくりスライド資料見てみたいけど、UPされると良いな〜。今後に期待。

あとSeleniumを結構ガシガシ使っているという話もあり、この辺にも興味が湧きました。出たての頃ちょっと触って見たものの実用化・取り込みまでには至らずで今に至るのですが、あれから使い勝手的にはどうなったのだろう?仕様変更がある度にコードも書き換える…みたいなコメントもされていたので、劇的改善!とまでは行っていないのだろうか。

まとめとしては、

  • コーディングする前やコーディングの速い段階でジョブを作成したので、様々なメリットが得られた
  • 単体〜結合までを自動化でテスト時の作業の効率化が出来た!
  • seleniumのコードメンテが大変

更に、今後の課題としては、

  • 雛形コードを一発で作成したい
  • Jenkinsからバグトラッカーへの連携を設定したい
  • XFDをつけたい

そして、個人的には結構大きなニュースだったのですが、Jenkinsに関する書籍が発売されるそうです。発売は10月末辺りを予定(残念ながら @wadatka 氏には印税は入らないらしい…)。

もう少し先の話ですが、発売が楽しみです。

「これで君のインテグレーションは――始まりも、終わりもなくなった」〜RailsプロジェクトでふつうにJenkins 〜

英和システムマネジメント所属のお二方。全3部構成で2人でリレー形式のセッション。

  • 1.私たちのCIへの取り組み…年代別の利用CI環境の変遷。
  • <2008年>
  • <2009年〜2010年>
    • CI戦国時代
    • スローテスト問題
    • Jenkins、Integrityなどを利用
  • <2010年後半>
  • <2011年>
    • Jenkins, BigTunaの2強時代
      • 信頼と実績:Jenkins
      • Rails3製のBigTuna
    • LXCからGaneti+Chefへ

※2007〜2008年頃までは空きマシンを共有する形だったものが、2009年以降はLXCで専用インスタンスを用意…と掛けるマシンパワーが増大。やはりこれくらいは用意しないと快適なCI環境は望めないですね。

  • 2.Rails3時代のJenkins
  • 誰だってIRCは欲しいさ
  • IRCインテグレーション(の実施手順)
  • 2.Jenkinsが最新コードを取得しガンガンテスト実行
    • コードはGitから取得
    • Rvm+Bundlerで環境設定
    • RSpec+Cucumberの実行
    • デプロイ
    • ※どこでテストが落ちたかも分かる。
  • 3.Shipit!
    • IRCメッセージプラグイン経由で通知
    • デプロイ完了通知を飛ばせるのは
    • heroku deploy tasks
  • 4.POが内容を確認(herokuの)
    • pivotal tracker
  • 5.開発チームは開発にだけ集中
    • メンバー
    • pivotal tracker
    • jenkins
    • IRCボットに急かされながらのお仕事。
    • 1日のビルド回数 2〜20回
    • 1日のデプロイ回数 6-8回

  • CIを導入して変わったこと
    • 開発チームが開発に専念
    • 小さな変更点も見逃さない
    • 価値をすぐにお客さんの手元に

IRCを使って情報連携、通知も出来るというのは知りませんでした。つかチャットしながら各種通知を自動で受け取る…なんて何かちょっと楽しそう。そういう事が許される職場環境に身を置いてみたいものです…(´-ω-` )

  • 3.これからのCI環境
  • 最後に残ったCIサーバ
    • Jenkins
      • (○)安定した動作
      • (○)やりたいことは大体出来る
      • (▲)環境のお膳立てが大変
    • bigtuna
      • (○)Rails3製
      • (○)シンプルな環境
      • (▲)動作不安定
    • CIサーバとしてjenkinsは素晴らしい
    • Ruby/Railsも素晴らしい、様々な環境が整っている
  • 相談したいこと
    • Cloud Testing
      • スローテスト問題
      • JenkinsとRVM, bundler
    • headless browserについて

質疑応答で幾つかお話のやり取りがありましたが、個人的には高度な話題だったのでついて行けず…発表者の方々には光の見えた(?)時間となっていた模様です。

PHP開発でのJenkins(仮)

『モテるjenkins女子力を磨くための4つのプラグイン』と題し、これまでのセッションとは若干テイストの異なる時間となりました…。
冒頭からMacの接続調整に苦戦されており、やましろさん的にはかなりあっぷあっぷされていたようでした。(^_^;)

怪談話等を随所に盛り込み、PHPMD/PHPUnit/Clover等のPHP関連プラグインを紹介。

…すみません、これまでのセッションとのギャップが大き過ぎて細かい部分が入ってきませんでした…(汗)





LT

Rubyで簡単にRemote Access APIを実行する

RubyからのリモートアクセスでJenkinsを操作する際のAPIについて。こちらのLTに関しては既にスライド・BlogエントリもUPされているようなのでそちらをご参照頂ければと思います。

  • Remote Access APIとは
    • jenkinsがリモートからの命令を受け、実行するための外部インタフェース
    • RESTライクなURL形式で提供される


久々のJenkins勉強会、テーマが『LL言語』と言うことで個人的にはLL言語に浸かってるとは言い難い状況。どんなもんかな〜と思いましたが、Jenkinsでこんな事出来るんだ?という個人的発見や、Jenkins(及びCI環境)を導入・運用する上での要点なども幾つか得られ、意義のある時間となりました。

あとはやはり、Jenkins及び周辺環境の学習・知識習得については実践あるのみ。Jenkinsも環境導入してちょろちょろ触るだけでは入り口にも入ってない状況だな〜と実感。

何らかの(疑似)開発プロジェクトでも立ち上げて、それらを設計・実装・テストしていくシナリオを用意してそれらの過程でJenkinsなり関連環境のノウハウを身に付けなければ…!と強く思いました。

以前購入したこの本を読み返しつつ、

継続的インテグレーション入門

継続的インテグレーション入門

テストノウハウを得るためにまずはJUnit本から知識を蓄積。
JUnit in Action

JUnit in Action

そして今後控えているScrum/アジャイル/設計/xDD関連のイベントにも触れていき、総合的に力を付けていきたいものですな!(`・ω・´)クワッ !!


第3回Jenkins勉強会 関連URL: