第4回Jenkins勉強会に参加してきた #jenkinsstudy


(写真:夜の六本木ヒルズ。)

第4回Jenkins勉強会を開催します。

今回のテーマは「C/C++/C#(...etc)プロジェクトにおけるJenkinsの運用について」です。
第2回で取り上げたJava、第3回で取り上げたLL言語とはまた違った視点からの有用な事例を聞けることでしょう。
興味がある方はぜひご参加ください。

ハッシュタグ:#jenkinsstudy

はい、と言う訳でJenkins勉強会、参加して参りました。Jenkins勉強会については第1回を除いて第2回から連続で、また一昨日にはJenkins関連の勉強会にも参加して来ましたので2日振りの川口さんご拝見、という感じです。

開催場所はグリー株式会社。以前HTML5とか勉強会でGoogleに訪れて以来の六本木ヒルズです。

講演:クロスコンパイルに役立つmatrix projectの紹介


川口さんの服装、『JenkinsTシャツ』なのはさすがです。:-)

  • 紹介に至る動機
    • 同じ/似た作業をさまざまな環境で行いたい
      • C++のコードの複数プラットフォームでのコンパイル
      • 異なるブラウザを使ってWebアプリのテスト
    • より一般化された形
  • モデル
    • 軸を定義
      • 軸=forループ
    • 軸には幾つもの種類がある
      • スレーブ:複数のスレーブ
  • 組み合わせフィルタ
    • 全組み合わせを実行すると数が多すぎる場合
    • 意義のない・不可能名組み合わせがある場合
    • ブール式で有意義な組み合わせを指定
    • indexを使って一律カット
      • バラエティを保ちつつ均等に間引く
  • (Jenkins実演デモ)
    • 新しいjobを作るときに『マルチ構成プロジェクト』を選択
    • マトリックスの設定=cc/icc gcc suncc
    • シェルの実行
    • 組み合わせフィルタの設定で間引く
    • ビルドが壊れるサンプル実行:groovyで1/2の確率でエラーになるタスクを実行。
    • カタストロフィックなエラー
      • 条件となるエラーが起きた時点で以降の処理を行わない、という設定デモ


  • 環境によって影響を受けやすい、という状況が、CやC++等が多いのでは。

質疑応答:

  • Q:機能を知っていた人?
    • A:数人。川口さん『紹介した甲斐がありました』
  • Q:川口さんがマルチプロジェクトをどういう件で使ったか
    • A:異なるJDKでのテスト/以前のバージョンとの連携確認テストなど。

講演:「Jenkins+α」で開発環境がみるみる良くなる VisualC++編


  • 自己紹介
  • Jenkinsさん
    • CIツール
    • 作業を自動化・共有するための仕組み
    • 優秀なWEBインターフェース
    • 導入が簡単!
    • 多くのプラグイン拡張!
    • 元々Java向けのツール。
    • プラグインC++関係のものも作られている。
  • Visual C++
    • Jenkinsと他のツールの組み合わせ方を紹介
      • 組み合わせを使ってナンボ
    • 具体的な説明のために環境を特定しました
      • 他の環境にも適用可能です。
  • 自動ビルド+警告検知
  • 自動テスト
    • C++ユニットテストツール
      • CppUnit, CppTest
        • 比較的歴史が長い、最近の更新頻度は低い
      • GoogleTest
        • 充実したテスト機能
      • MSTest
        • VS2008からProfessional Edition以上で利用可能
        • 元はTFSで使えた機能
        • データドリブンテストが良い感じ!
    • テスト結果をxmlで出力
      • Jenkinsが読み込んでグラフ化してくれる
      • 標準対応はJunit形式(googleTest)
    • その他テストツールは
  • UIの自動テスト
    • 起動→終了だけでも効果あり!
    • Jenkinsのスレイブをテスト専用環境に入れてクリーンな環境で実行
      • 利用者と同じ環境設定
      • リソース忘れ等の確認
  • メトリクス分析
    • コード行数やコメント率、複雑度などを分析
    • 推移や他のプロジェクトと比較して健全度を測る
      • ※うまく運用するのが難しい点でもある。
    • CCCC(C and C++ Code Counter)
      • あんま使い物にならなかった。
  • コラボレーションツール
    • メール通知(標準機能)
    • Twitter, Jabber, IRC連動
    • チームメンバーと親和性の高い仕組みを入れるのが○
    • BTSとの連動
      • redmine, tracとの連動
      • jenkinsからチケット発行
  • P+ython Plugin
  • とりあえずわさったものを片っ端から紹介してみました。どや!(ドヤ顔写真は寝入れれど)
  • 全部のせの巨大なシステムを見せられても引きます。
  • 引いた人もいるでしょ?
  • もともと開発環境系のツールに詳しかったわけではない。
  • 統合すると便利そうなものを試そう。
  • 効果が出そうなものを本番環境へ導入。
  • Jenkins(hudson)さんとぼくの歴史(上/下)
    • 自動ビルド導入
    • メール通知誤爆事件
    • 成果物のパッケージ化、デプロイ自動化
    • UIの自動化テストを導入(autolt)
    • ドキュメントの自動生成
    • チーム外への波及
    • チケット管理との連携を考える
    • 静的解析(coverity)とjenkinsとredmineの連携(2011.08)
    • 試して使う人の反応が良いものを残す
  • まとめ
    • まずは自動ビルドから。
    • 次に効果の高そうなところから
    • 関係者と価値観を共有しながら
    • 継続していきましょう。
    • Visual Studio GUIのテスト大変。うまい遣りようは無いのか?
      • ビルドの設定
      • ネットの情報で有益なものがあったのでそれで。。。
  • 質疑応答
  • (Q):devenvはコマンドラインで実行してたのですが、ニュータイプはそんな事しないの?(川口)
    • (A):msbuildの方が簡単そうだからそっちを選んだ。社内の調整が面倒なので簡単な方を。

講演:輪るBingドラム.NET - CI戦略、しましょうか(仮)


  • 名古屋から来ました。
  • C#だけ異色を放っている感が
  • C#よりもむしろF#』。
  • お仕事でjenkinsまわしてます。
  • Bingとか出て来ません。すみません。
  • まとめると『MSbuild便利だよね。
  • この発表では以下について発表します。
    • 構成の紹介
    • 実際に運用してどうだったか
  • 構成
    • 社内では出来る限り模したサーバを構築
    • ビルド環境も別途Jenkins環境として用意
  • プロジェクト毎のJenkinsの構成
  • Jenkins導入の効果
    • 問題の早期発見
    • リリースプロセスの標準化
      • 導入前はリリースはかなり適当だった
    • 開発者に安心を与える
      • (個人的に)思いもよらない効果
        • 開発者は不安を持っている
          • 手許ではビルド出来るけど、他では…?
          • さっきの変更で他の何か壊してないかなぁ…?
  • 失敗談
    • ビルド後に行う処理をjenkinsの外に出したこと
      • →だめなこと
    • 全てのビルドを1つのマシンに集約したこと
    • 何もないところからビルドせずに問題発見が遅れたこと
  • 無理して1つにまとめない
    • そうしないと
      • ビルドマシンの中がぐちゃぐちゃに
      • 失敗するべきビルドが成功してしまうことも
    • どうする?
      • 必要な環境毎にビルドマシンを分ける
      • 各々をスレーブ毎にわける(まだできてない)
  • 必ず何もないところからビルドする
    • そうしないと
      • 失敗するべきビルドが成功してしまう
    • どうする?
      • 何も無いところからビルドするようにしましょう。
        • こんな当たり前のことで失敗してしまった
  • まとめ
    • .NETでもJenkins便利です
    • 開発者に安心感を!
    • 基本に忠実に!
  • 質疑応答
    • TFSが優れているところは?
      • →オールインワンであるところ。
      • ※でも用意は非常に面倒ですよ。

LT:Jenkinsを愛する全ての人に贈る『Jenkins実践入門』 11月発売! 目次チラ見せしちゃいます


  • Jenkinsの情報収集ってどうやってますか?
    • ヘルプ
    • Wiki
    • 日本Jenkinsユーザ会
    • Jenkins ML
    • 洋書
    • 男は黙ってソースを読む!
    • 自由度が高すぎてどうすればよいか…


Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

  • 川口さん監修!
  • 現場の声、ベストプラクティスも!
  • サンプルプロジェクトも!
  • 2011/11/11発売予定。
  • 目次の紹介。
  • よりすぐりのコラムも充実。
  • 印税は入らないそうです...

LT:こっちだってJenkinsを愛する全ての人に贈る『Jenkins The Definitive Guide日本語訳』 実践入門の(たぶん)ちょっと後に発売!


こちらの前半は連続写真で御覧下さい。上記の書籍が出る、という事を踏まえた味わい深い(著者にとっては泣きたくなるような)展開となっております…^^;


  • @tamagawa_ryujiさん曰く、『印税は私に入ります』という事らしいです。
  • Hadoopの書籍(象本)が有名。

Hadoop

Hadoop

  • 『Jenkins: The Definitive Guide』の訳本。

Jenkins: The Definitive Guide: Continuous Integration for the Masses

Jenkins: The Definitive Guide: Continuous Integration for the Masses

    • まじめな人英語読める人は英語読んだ方が良いよ。
    • ちなみに:マルチ構成プロジェクトの話はかなりくわしく書かれています。
    • Amazon Web Services のEC2とか、CloudbeesさんのDEV@cloudの話も出て来ます。
  • 発売予定は?
    • おそらく1月に出せるのでは。
    • ご期待下さい!

LT:Jenkins温泉とは何だったのか(仮)

  • 自己紹介
  • Jenkins温泉とは何だったのか!
    • 良い大人達が
    • 一日中
    • (以下略)
    • 一般人からみると明らかに異質な集団による集まりでした。


  • 総評
    • 川口さんとリアルタイムでやり取りできる!
    • Jenkins漬け。頭を切り替えられる。
  • 次回乞うご期待!(あるのか?)

LT:Ruby Plugins for Jenkins

終演時間まで間が空いていた為、突発的にLTが追加されました。こちらはそのうちの1つ、Rubyに関するものです。

スライド資料は上記の1枚のみ。あとはリンクを辿ったり実演等で解説を行っておりました。関連スライドは以下。

LT:Jenins Confの開催報告

先日海外で行われた『Jenkins user conference 2011』に関する報告LT。

  • 発表への応募 30+
  • 参加者:250位
  • 7スポンサー
  • 2トラック 20の発表
  • 世界各国から参加者が集まった。
  • ホテルの2フロアを貸し切り。


  • 川口さんの発表:plugin growth
    • 2007年から増加。
  • チケットのアクティビティ
    • 増加+ペースも増えている

  • スライドとビデオは後で公開予定。
  • エコシステム拡大
    • Jenkins is now in Ubuntu
    • Ubuntuにオフィシャルで入るようになるらしい。

LT上ではこんな書籍の紹介もありました。PHP x Jenkins。

Integrating PHP Projects with Jenkins: Continuous Integration for Robust Building and Testing

Integrating PHP Projects with Jenkins: Continuous Integration for Robust Building and Testing


個人的にはJenkins洋書を購入し実践を踏まえて読み進め中だったので、(C++/C#等寄りのセッションではありましたが)数多くのプラグインが存在し、利用・実践手法を知る事が出来たので非常に有意義な勉強会になりました。

なお、Jenkins本原書はeBook形式で無料で入手可能だそうです。今回発表されたJenkins本×2冊が出る前に、英語版で挑戦してみるのは如何でしょうか。(個人的には読み易い方だと思います。)

その他関連サイト: