Jenkins ユーザ・カンファレンス 2012 東京 に参加してきた #juc2012
(写真:川口さんの基調講演にて姿を現した"ニンジャ"Jenkins、そして…"タモリ"?)
暫く前から開催がささやかれており、参加募集開始と共に爆発的な登録数を記録、何と『1000人』の壁を突破したという恐るべき興味関心を惹いていた【Jenkinsユーザカンファレンス】。
この日ようやく開催の運びとなり、自分も朝イチからガッツリ参加してきました!
開催場所は法政大学市ケ谷キャンパス 外濠校舎@市ヶ谷。この日は連日のうだるような暑さが続いており、市ヶ谷駅から徒歩で校舎に向かったのですがこの時点で汗ダラダラ、だいぶぐったり目w
(※本編とは関係ありませんが、ちょうど時期的にもロンドン五輪開催中であり、法政大学出身者を励ます巨大横断幕があったのでパチリ。この日偶然にも重量挙げの三宅選手が銀メダルを獲ってました!)
会場到着。『さったホール』って珍しい名前だな〜と思ってたんですが、人の名前だったんですね。
さったホールを部屋の一番後ろから撮った図。広い!収容人員800名超。
席にはクリアファイル、ステッカー等々、各種取り揃えられておりました。これは嬉しいですね。
ちなみに、今回私は以下のセッションに参戦しました。 ・satta-1 : Jenkinsプロジェクト現状報告とこれから (基調講演) ・S406-2 : SIerのJenkins事情 〜CI実践プロジェクト事例から超大規模プロジェクトの活用事例まで〜 (スポンサーセッション:NTTデータ) ・S406-3 : 愛されるJenkins氏になるために (スポンサーセッション:DeNA) ・S505-4 : Jenkins に XFD を追加してみると? ・S505-5 : AWSで実現するSeleniumテスト高速術 ・satta-6 : LT大会
11:30を迎え、いよいよ本編開始、川口さんの基調講演です。以下参戦メモ。
satta-1 : Jenkinsプロジェクト現状報告とこれから (基調講演)
Jenkinsプロジェクトがこの新しい名前になってから、一年半あまりが経ちました。 本発表では、プロジェクトの現状や最近実装された機能を紹介し、 普及の度合いをはかる数値などを交えつつ、プロジェクトの歩みを振り返ります。 後半では、現在進行中の様々な取り組みや、今後予定されている(もしくは実装していきたい)機能や、 また中長期的に取り組んでいきたい分野、技術の方向性などについてもふれたいと思います。
- トップバッターをつとめる川口です。
- 1000人以上の登録、ありがとうございます!
- 開催時時点で:1016/1300人。
- 先日誕生日を迎えました&お祝いしてもらいました!
-
- その時のケーキがこちら。
- 運営スタッフの皆さんに感謝!
- 法政大学関係者の方々
- ボランティアの皆様方
- 普及活動
- プラグインの拡大
- チケット数の遷移
- チケット総数に活動が追い着いてない感じ
- インストール総数
- 43000台のマスターが長期間活動している。
- ユーザの中には大企業もそうでない企業も沢山。
- "忍び"のように、うしろから入ってきて気が付いたら制圧している…!
-
-
- Jenkins、世界中で使われています
- アフリカでも、ハワイでも。
- Jenkins、世界中で使われています
-
- 新機能の紹介
- 目指す設定画面へ短いキー操作でアクセス出来る機能。
- ページ内へのナビゲーションへもジャンプ可能
- 適用ボタンを作って、設定内容の保存が出来るようになっている。
- ビルド職人の境目:ドラッグアンドドロップで順序を変えられる!
- 点線枠で掴む場所が分かり易く。
- メニューからセレクトタグ経由でメニュー選択出来るように。
- 目指す設定画面へ短いキー操作でアクセス出来る機能。
等々
-
- Jenkins Enterprise by CloudBees
- サポート+企業向け追加プラグイン
- 5月に新版リリース
- 詳しくはCloudBeesの配布物を!
- Jenkins Enterprise by CloudBees
- BuildHiveについて
- プロセスとプロジェクト運営体制の整備(OSSの話)
- 法人格の取得(SPI経由で)
- 寄付金集め:目標をオーバーする金額が集まった。日本からも多数寄付有り。
- Jenkins CIAプログラム
- 只今エージェント絶賛募集中!
-
-
- ちなみに本物のCIAはこちら。
- 暫定役員会
- SPIにリポートするプロジェクトの意志決定機関。川口さんも所属。
- 本当の意志決定機関
- 隔週ミーティング:IRCで開催、議題・参加は誰でも可能、議事録も閲覧可能
- プロジェクト憲章の制定
- 開発者ライセンス契約(CLA)
- 色々な団体のお世話に
- jenkins-ci.orgに必要なサービスを外部委託
- 某O社とも色々あったし…
-
- 長期サポート(LTS)リリースの対応
- 通常リリースからのバグ修正バックポーティングのみ
- スイートスポットの拡大
- より大規模環境で快適に
- 複雑なワークフローへの対応
- 計算機を湯水のように使えるように…
- まとめ
- 色々な取り組みが成果を出しました。
- 今後も色々な取り組みが進んで行きます
- フィードバックを!良ければ開発にも参加して下さい。
- 今日一日を、楽しんで下さい!
S406-2 : SIerのJenkins事情 〜C
I実践プロジェクト事例から超大規模プロジェクトの活用事例まで〜 (スポンサーセッション:NTTデータ)
日本のSIerがJenkinsを普及に努めて3年!社内普及活動の内容を紹介します。 また、小さいけど執事Jenkinsの活躍に支えられながら歩んできたプロジェクトから 超大規模プロジェクトで1000人を超える多くの開発者を助けてきたJenkinsの雄姿を紹介します。
- 自己紹介
- アジェンダ
- 社内展開
- 目論見
- 取り組み
- 事例
- プロジェクトA
- プロジェクトK
- プロジェクトB
- まとめ
- 社内展開
社内展開
- Jenkinsを使うなら
- 目論見
- 品質向上
- 自動テストで繰り返し開発の品質を向上させる。
- 自動化で作業ミスを無くす。
- 属人性を無くす。
- コスト削減
- バグの早期発見で手戻りを最小限にする。
- 自動化で作業者の手間を減らす。
- プロジェクト状況の見える化
- メトリクスを自動で取得する
- 解析結果、テスト結果をレポート出力する。
- 品質向上
- 取り組み
- SDワークベンチという社内ブランドとして展開
- 社内向けの開発環境ツールセットして、既に普及しているSDワークベンチに追加した。
事例:プロジェクトA
- プロジェクトのエースである大島さん(仮)に聞きました
- 組織として推進
- 組織として自動化を推進したい
- 自動ビルド
- 自動テスト
- コードの自動生成 etc
- リスクヘッジ
- 定常リリースに影響が少ないところで実施したい
- Selenium2
- CheckStyle
- FindBugs
- 定常リリースに影響が少ないところで実施したい
- 組織として自動化を推進したい
- お客様にヒット
- どのように使った?
- リリース業務と分けて構築
- 動作環境の違いに苦労した
- 各ソフトウェアの動作環境が異なっていた
- jenkinsのジョブ単位で利用するJDKやAntのバージョンを個別に設定して実行した。
-
- 結果レポートの共有
- 品質管理チームと結果レポートを共有
- 品質管理チームが開発LANから切り離されている。
- Jenkinsのweb画面から直接参照出来ない。
- レポートのポータビリティが必要
- 品質管理チームと結果レポートを共有
- 結果レポートの共有
-
- 今後の展開は?
- 自動化範囲の拡大
- 今後の展開は?
事例:プロジェクトK
- テスト環境へデプロイ
- Jenkinsでデプロイ用のジョブを作成
-
- デプロイ頻度・対象
- デプロイ先は約20面
- 各アプリ毎のテスト環境
- 性能評価環境など
- 1面に対して、1日4〜5回
- デプロイ先は約20面
- 担当者は2名。
- デプロイ頻度・対象
- 速度向上とコスト削減
事例:プロジェクトB
- 最近Hプロジェクトに移動した指原さん(仮)に聞きました
- どんなプロジェクト?
- 超大規模案件
- どんな経緯?
- スムーズに入ったの?
- Jenkinsで各ビルドスクリプト用のジョブを作成
- Jenkinsは指揮者
- どんな使い方をしたの?
- ファイル転送・デプロイで利用
- どのような運用をしたのか?
- 1日4回の定時デプロイ
- デプロイ時刻は決まっていた
- 定刻までに修正されたコードをテスト環境にデプロイした。
- 間に合わなかった修正は次のデプロイで取り込む。
- Jenkinsが与えたインパクト
- ビルド作業の効率化
- 大多数のマシンへのデプロイを制御
- 作業待ち時間が大幅に削減
- ビルド失敗の影響は大きいのでは?
- リスクの限定化
- まず、1つの環境にデプロイした。
- 30分間の運用で問題が無ければ、全環境にデプロイした。
- リスクの限定化
- 貸出返却について
- 貸出返却とは
- 貸出返却の目的とデメリット
- 貸出返却は必要無い?
- 3つのポイント
- 繰り返しリリース
- 段階的なリリース
- 貸出返却の撤廃
S406-3 : 愛されるJenkins氏になるために (スポンサーセッション:DeNA)
Jenkinsによる自動テストや静的検証を導入したけど、うむむ、どうも、メンバーのみんなにあまり役になっている気がしないぞ。 なぜなんだだろう、どうしたらみんなに役に立ってもらえる、みんなが見てくれる、みんなが使ってくれる、 Jenkins氏になれるだろうかという悪戦苦闘の半年を生々しくご紹介します。
- 所属
- Worldwide向けソーシャルゲームチームのQA
- ミッション
- プロセス品質の向上
- ゲーム品質の向上
- ※現在は北米向けに注力して制作
- ミッション
- Worldwide向けソーシャルゲームチームのQA
- ゲームで使用されている技術と課題
- Jenkinsの導入
- 発端
- 手動テストの限界
- 各自の環境でサーバサイドの自動テスト
- 各自の環境での自動テストの限界
- Jenkinsの導入
- とりあえず、自動テストを…
- 複数ブランチでの並行開発
- イベント==ブランチ
- マージされる開発ブランチ→Jenkinsのジョブ対象
- CIのベストプラクティスが通じない
- 複数ブランチでの並行開発
- とりあえず、自動テストを…
- 発端
- 自動テストの活用の改善
- git-flowによる¥解決策
- CIのベストプラクティス
- カスタマイズしたけど…
- フィットしない…
- 無理でした…
- git-flowによる¥解決策
-
- 現実を認める
- 全ブランチの自動テストをjenkinsで実施
- iPadをXFDに
- いつもみんなの目につくところに
-
- いけてないStatus monitor plugin
- iPadでも遠くから分かり易く見えるように修正
- 直列ジョブ詰まる問題の対応
- Build-timeout Plugin
- 誰でも簡単に作れるジョブ
- ブランチ名を変更すればOK
- 複数ブランチのテストが並列に実行出来ない問題
- 歴史的経緯
- 普通のJenkinsのジョブっぽく作ったバージョン
- 本番環境への影響からお蔵入り
- 前述の直列ジョブ詰まる問題
- いけてないStatus monitor plugin
-
- アーキテクトUさんによる絶大な改善
- クラスとテストをテンプレート化し、自動生成
- 自動テストにperlcriticを組み込み
- 自動テストにPerl::Metrics::Liteを組み込み
- アーキテクトUさんによる絶大な改善
-
- 様々な改善の効果
- XFDによる即座の修正
- 必ずテストを書く
- 自分でJenkinsのジョブを作る
- Jenkinsへの要望の増加
- ※jenkinsは人ではない。メンタリティ。(なので背景画像のJenkinsも薄くした)
- 様々な改善の効果
- 静的検証の活用と改善
- 最初の改善
- Perlcritic on Jenkins
- 見ない&直さない
- アーキテクトUさんの改善
- 既存のコードは直さないという割り切り
- 新規はテストに組み込む
- 上手く行った!
- 最初の改善
- 質疑応答:
- [Q].最初にテストをdisabledにしてグリーンする、その後は?
- [Q].既存の不具合は直さない、という割り切り、こわいなーと思う。それで痛い目に合った経験とかは?
- [Q].XFDにiPadを選択した理由は?
- [Q].只今執筆中のJenkins本について何か教えてもらえれば…
主に以下の質問が挙がったのですが、内容的に(ピー)入れとかないといけないようなものだったりしてるので(書籍出版に関しては特に)、回答については自主規制とさせて頂きたいと思います。m(_ _)m (笑)
S505-4 : Jenkins に XFD を追加してみると?
- HARADA Kiro(TwitterID:@haradakiro)さん
- Takuya Nishigori(TwitterID:@_nishigori)さん
- Go Takahashi(TwitterID:@goking)さん
- 川路義隆(TwitterID:@kawaji_scratch)さん
Jenkins を使い始めると、もう使っていなかったときのをことを忘れるくらい便利ですよね。 でも、本当に急がしくなると忘れてしまったり、ほったらかしたりしていませんか? そこで、Extreme Feedback Device の出番です。 XFD は、Jenkins の状態を見て、ビルドが失敗すると、ランプが光る、音を鳴らす、 しゃべるなどのいろいろな方法でチームに知らせます。 この発表では、Arduino を使って XFD を作成する方法と、実際に XFDを導入してみたいくつかのチームに、 どんな影響があったのかを中心にお話ししたいと思います。
こちらは既にスライド資料が多くUPされているため、メモは省いてざっくり流れのみを。
まずは原田騎郎さんによるXFD解説。
XFDの解説及び過去から現在に至るまでの幾つかの歴史について言及した後、XFDの実演デモを実施。Jenkinsでタスクが実行失敗すると…
『はんだづけ』に関しては、イベントを催した事についても報告が。
次いで、XFDを職場に導入した御三方の報告セッション。まずは『湯島道場』ことアルティネット株式会社様より、西郡さんの発表。
XFD導入前(メール)から導入後、または導入してからの問題点や改善点などについて言及しております。
そして3人目は遠く福岡からいらした高橋さんの発表。0号機から始まり2号機に至るまでの、社内で利用を重ねてきたXFDに関する失敗談・導入効果等について。
最後4人目は川路さん。(こちらはスライドが未UPなので参戦メモで)
- 導入してどうなったか?
- コミット粒度が小さくなった
- 一定水準の安心感
- 環境依存問題の減少
- チーム以外のメンバーからガヤ増加。
- 弊社のXFDの紹介
- デジタル:羽トランプ
- アナログ:ピコピコハンマー
- 良い点
- XFDを2チーム間で共有:御前のチームじゃねえのか?疑心暗鬼に
- 悪い点
- 飲み会中に現場へ強制送還。
- XFDの置き場所、フラッシュに注意!
- ピカチュウクラッシュ
- 今後の改善
- 参加者様へのメッセージ
- プロジェクト初期から導入した方が良い。
- デプロイ自動化:成功した数の積み重ねが自信を生む
- 勿論途中導入のメリットもあり。
- 番外編
最後は原田さんに再度バトンタッチで締め。
- 何が変わるか
- 確認作業は実はムダ
- XFDを作ってみたくなりましたか?
- 作ったらぜひシェアしてください。
いやぁ、このセッション、普段とは違う切り口で中々に面白かったですね。やはり目に見えてこういう結果が分かるってのは、良いもんですね。(※良い面ばかりでも無さそうだけど…w)
S505-5 : AWSで実現するSeleniumテスト高速術
- 井上史彰(いのうえふみあき)氏 株式会社シャノン QAマネージャー
Seleniumを使ったリグレッションテストをAWS上で行うことで、どのように短時間かつ安定したテスト実行を行なっているか。 また、どのようにスケールできるような構成にしているのかについて紹介します。
- 自己紹介
- 仕事は
- 開発エンジニア - 開発マネージャー - QAマネージャー
- 言語:Perl
- 製品紹介
- 開発体制:Scrum
- スプリント期間は1ヶ月
- 7人チーム×2
- 開発:QA = 2:1
- 毎月4週目にバージョンアップ
- 前月に開発した機能をリリース
- Seleniumテストでの様々な課題
- 課題1:
- テストの定期実行と結果の見える化
- Jenkinsの導入
- いつテストが実行されたか分からない
- テスト実行にはWindowsPCにログインして手動で実行
- 誰かが使っていると他の人が使えない→取り合いに
- テストが成功したかわからない
- テスト結果もPCにログインして結果のレポートを確認する必要があった
- いつテストが実行されたか分からない
- 課題2:
- テストの安定化
- テストケースの量産:
- でも、Seleniumは安定しない。なんで?
- ソースコードを変更しなくてもコケてたらしい。
- Seleniumはページを表示したときに、全部ロードする(準備が出来る)前に走ってしまう。だからコケる。
- 回避するには、assertionを繰り返せ。らしい。→spin asserts を対応。
- How to Lose Races and Win at Selenium | Selenium Testing? Do Cross Browser Testing with Sauce Labs
- テストの安定化
-
- Exporting the Test for Junit
- エクスポートしてみた。
- テストケースをチェックアウト
- Junit形式にエクスポート
- Javaテストケースのコンパイル
- テスト実行、レポート出力
- レポートの拡張
- エラーで落ちた場合に画面に内容を出力した。今までは毎回同じ操作をしていたので効率化。
- WebDriver/Selenium2にも対応させた
- 各種プラットフォーム/ブラウザのテスト
- POINT:javascriptなどブラウザに依存することの確認を行うテストケースを実行
- Exporting the Test for Junit
- 課題3:
- 最後に:
- 新しく製品の自動テストを作るとしたら?
Seleniumという非常に興味深い、得るものが多い内容だったのですがメモ取りも甘く、時間も押し気味だったので駆け足になってしまっていた部分もあり全てを把握は仕切れませんでした。無念。資料がUPされたら改めて熟読してみたいです。
satta-6 : LT大会
今回は後述する『Togetterまとめ』の作業に追われたりだったりで、正直このLT大会の時はだいぶ体力の限界を迎えておりました(笑)
と言う訳なので、ここは『この写真』という一枚+つぶやきでLTをそれぞれ振り返ってみたいと思います。
LT:運用でも使えるjenkins
と言うわけで11:30からほぼノンストップで駆け抜けてきたJenkinsカンファレンスも17:00過ぎには終了。
個人的には『昼休みが無かった』のと『休憩時間が短い』と言うのが気になった点と言えば点ですが、これは恐らく【18:00には完全撤収】という状況があったための苦渋の選択だったのかな?と想像。1000人近くの参加申請があり、人数だけで言えば混乱を招きかねないんじゃないか、というのはあったのかなと思います。
逆に言うと、それ以外については何ら気になる所は無く、内容・設備共に素晴らしいカンファレンスであったと思います。
Jenkins個別にテーマを向けると、個人ではJenkinsをちょこちょことではありますが使ってる状態からすると、やってる人はかなり深まった・進んだ使い方なり運用方法でJenkinsを使ってるんだな〜、というのを痛切に感じました。Jenkins等を用いた自動化や関連するプラクティス・手法については今後避けて通る事の出来ないテーマであり、自分のスキルとしても吸収して行きたいところ。より一層業務や個人学習のテーマと絡めてJenkinsを探求して行こうと思います。
Jenkinsユーザーカンファレンスに関わるスタッフの皆様、講演者の皆様、会場御提供頂いた法政大学の関係者様、そして当日御参加された皆様。ありがとうございました!
イベント関連エントリなど
見つけ次第、順次追加して行きます。
Togetter一覧
今回のJenkinsカンファレンス、参加者が約1000人/ニコ動もある/途中部屋別でセッションが分かれている、という状況から『これはハッシュタグ1つでは(つぶやきをまとめる人が)死ぬな…』と思い、直前ではありますが運営スタッフの方々に非公式ハッシュタグの作成を提案し、当日は公式・非公式ハッシュタグでつぶやきをまとめました。
講演者・運営の方々、そして参加者の皆さんによって非公式のハッシュタグもそれなりに周知出来、つぶやいて頂いたおかげで公式×2、非公式×14の計16個のTogetterまとめを作成する事が出来ました。ありがとうございました!
また、つぶやきまとめにつきましてはおれんじクローバー(TwitterID:@orange_clover)さん、kimukou(TwitterID:@kimukou2628)さんの両名にお手伝いして頂きました。ありがとうございました!
以下、Togetterまとめの一覧です。
非公式:さったホール(収容人員:870名)で行われたセッション一覧
(ハッシュタグ:#juc2012 #juc2012_satta)
非公式:S505(収容人員:210名)で行われたセッション一覧
(ハッシュタグ:#juc2012 #juc2012_S505)
海外からの登壇者講演のリアルタイム抄訳について
- 山本裕介 (TwitterID:@yusuke)さんによるリアルタイム抄訳が当日行われたようです。対象セッションは以下の3つ。
“Continuous Integration Continuous Quality Continuous Delivery” John Smart (@wakaleo) - satta-3 : 飛行機を飛ばしながら直す方法教えます:JenkinsとGerritによる継続的デプロイメントの実践 “Continuous Deployment with Jenkins and Gerrit” R. Tyler Croy (@agentdero) (@jenkinsciの中の人) - satta-4 : 複雑な多段階ビルドに対処する: 事例紹介 Andrew Bayer (@abayer) Jenkins Governance board メンバー
どのセッションも興味深くはあるが、言葉の壁がなぁ…と悩んでおられた方にとってはこの上ないサポートですね。ありがとうございます!リアルタイム抄訳(を行うと思われる)資料のURLは以下。