第3回 Jenkins勉強会 に行ってきた

いろいろ勉強になったし、楽しかった!
あと、ひさしぶりに勉強会の懇親会に参加した。人見知りするので、いつもどきどきしてしまうが、いろいろな方のJenkinsの使い方を聞けて参考になった。

テーマは「LL言語プロジェクトにおけるJenkinsの運用について」だった。次のプロジェクトでRubyが使えそうで、目下必死に勉強中だったので、ぴったりのテーマだった。

TogetterやUstやWikiはこちら。まとめてくださった方、動画配信してくださった方に感謝。

発表内容はこんな感じ。

前回の勉強会はこんな感じだった。

Jenkinsの現状報告

本来は予定されていなかったけど、最初に川口さんから最近のJenkinsプロジェクトの動向について説明があった。
まあ、そうだよね。ちょっと期待していた。先日OracleがHudsonをEclipseに移管するという発表があったばかりなので。
前回に引き続き、まるで図ったかのように、Jenkins勉強会の前に大きな動きがある。

これまでの経緯はこんな感じ。

開発者の動向
  • Hudsonの開発者のほとんどはJenkinsへ
    • 733コミット(vs 172)
    • 42%はコミュニティから(vs 1%) 残りは川口さん
    • 48人(vs 7人)
  • コミットは増加した
    • リリースあたり平均11.3個の変更(vs 6.7)
  • 離婚劇後に参加したひとも多い。宣伝効果がw
プラグイン開発もJenkinsへ
ユーザに必要なものを届ける
  • 互換性を重視した開発
ユーザの動向
Oracle HudsonをEclipse
  • Jenkinsは想定より成功した
  • Eclipseの元なら合流できるか
    • ユーザからは合流を望む声は強い
    • その一方でEclipseOracleの手助けをするを嫌う声も強い
  • Jenkinsコミュニティの反応
    • 合流の条件を探っているところ
    • Apacheへの移管を望む声も強い

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

引き続き川口さんからのプレゼン。川口さんとCharles Lowellさんが進めている、RubyによるJenkinsプラグインの開発について。

野望
  • RubyでもっとJenkinsを使いたい
  • RubyでJenkinsを拡張したい
  • しかもRubyの知識だけで
  • Javaで動いているということは重要ではない
理想
Win-Win
実装方針
  • Coreを変更して型がないことに対応
  • Rubyオブジェクトをラッパに包んでJava
  • JRubyJavaのクラスを継承したりすると、変なRubyコードになって嫌
    • 拡張ポイントをRubyで定義しなおした
まだできていないところ
  • Rakeタスク

でも難しいところはだいたい作り終わった。

誰でも参加できます
  • Javaの知識もJenkinsの知識も不要
  • 週1でハックセッション
  • 英語できなくても大丈夫
QA
  • ERBはいやだ
    • Hamlがいいです!
  • JavaRuby名前空間を共有すると、ライブラリの名前がかぶったりしそう
  • 名前空間をわけたら挙動が怪しくなった…

Jenkinsと一緒にTracプラグイン開発

自己紹介
社内向け開発支援ツールの開発
  • SDワークベンチ
  • Trac Subversion Jenkins を組み合わせたオールインワンパッケージ
    • それなんて TracLig (ry
    • 認証や帳票のカスタマイズ
品質の担保
  • 一定以上のテスト密度
  • ゼロ機能リリース(ZFR Zero-Feature Release)を実践
    • コードのない状態でも、リリースできるように準備をしておく
TracPlugin開発

ここまでが前準備で、このあと開発する。
失敗するテストを書いてから実装。

まとめ
  • コーディングする前や早い段階でジョブを作成するので様々なメリット
  • リファクタリング時のデグレーションの早期発見
  • 実装量/テスト実施量の見える化でモチベーションアップ
  • 単体から結合までの自動化で、再テスト時の作業の効率化
  • 今後
    • 雛形コードと雛形ジョブを一発で作成したい
    • Jenkinsからバグトラッカーへの連携を設定したい
    • XFDつけたい
    • Seleniumプラグインをもっと使いたい
  • その他
    • Jenkins本書いてます。10月頃に出る予定。
    • いろんな事情で僕には印税が入りません ><

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

永和システムの [twitter:@kenchan]さんと [twitter:@hsbt] さんからの発表

  • これまでのCIへの取り組みとRails3時代のJenkins利用事例を通してこれからのCI環境についてお話します。

JenkinsStudy03

私たちのCIへの取り組み
  • 2008まで
  • 2009~2010
    • CI戦国時代
    • スローテスト問題
  • 2010後半
  • 2011
    • Jenkins
    • BigTuna(Rails3製)
Rails3時代のJenkins
  • 1.コードを書く テストも書く
  • 2.Jenkinsが5分おきにGithubにアクセスしてテスト
    • Gitから取得 rvm+bundler
    • テストがグリーンならHerokuにデプロイ
  • 3.shipit!
    • 通知される
  • 4.POが内容を確認
  • 5.開発メンバーは開発に専念
    • PIVOTAR TRACKER
    • IRC大好き
  • 1日のビルド回数 2-20回
  • 1日のデプロイ回数 6-8回
CIを導入して変わったこと
  • 開発チームが開発に専念
  • デプロイを意識しなくて良い
    • テストがOKならデプロイされる
これからのCI環境
  • 信頼と実績のJenkins
    • 安定した動作
    • でもRubyプロジェクトなのになんでJava?
  • BigTuna
    • Rails3製
    • シンプル
    • でもバックグラウンドプロセスがよく落ちる
  • Jenikinsは素晴らしいけどRails3界隈のツールを調べるのも楽しい
相談したいこと
  • ColudTesting
    • スローテスト問題
    • JenkinsとRVM Bundler
  • HeadlestBrowser
  • 魔法執事じぇんきんす☆マギカ

PHP開発でのJenkins(仮)

モテるjenkins女子力を磨くための4つのプラグイン
とても面白いセッションだったけど、僕の文章力ではその臨場感を書き切ることは非常に困難なため、の録画をどうぞ。

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

LTはメモを取っていなかった。でも資料が公開されている。よかった。

まとめ

事前アンケートでは、80人中60人が Java で Jenkins を使っているという結果だったみたい。やっぱりLL(あるいはJava以外)でJenkinsを使おうとすると、多少工夫しなくてはいけないことが出てくるのかも。
僕自身はあまり Jenkins を使いこなせていなくて、本当はがんがん使っていきたいけど様々な事情でごにょごにょな感じ。でもこういうところでいろいろな活用方法を知って、できるところから適用していきたい。