Jenkins User Conference                        Tokyo, July 29th 2012



        Jenkins ユーザ・カンファレンス
        2012


                      川口耕介 CloudBees, Inc.
                      Jenkinsクリエータ
                                         @kohsukekawa
                                 http://cloudbees.com/




                          #juc2012
                          #juc2012_satta
                          #juc2012_S505
                          #juc2012_S406
Jenkins User Conference   Tokyo, July 29th 2012




  有難うございます!
Jenkins User Conference                                             Tokyo, July 29th 2012




  運営スタッフの皆さん


    中村さん        佐藤さん         久川さん                    さぼてんさん         曽我部さん
                                        玉川さん
    (@ikikko)   (@lino_s)   (@ryomah)               (@cactusman)   (@ssogabe)


  • その他の皆さん
      – 法政大学
      – ボランティアの皆様


                                                  今井さん
                                               (@masanobuimai)
Jenkins User Conference   Tokyo, July 29th 2012

プラチナスポンサー




メディアスポンサー



シルバースポンサー
Jenkins User Conference                                      Tokyo, July 29th 2012




                          http://www.flickr.com/photos/nasamarshall/4256459445/
Jenkins User Conference                                    Tokyo, July 29th 2012




  プラグインの拡大
  600                                                  535
  500


  400

                                                  # of unique plugins
  300


  200


  100                                             new plugins/week
                                 releases/week

    0
   Jan-07   Jan-08   Jan-09   Jan-10     Jan-11        Jan-12
Jenkins User Conference                           Tokyo, July 29th 2012




  チケット数の変移
                                                  14500
  16000

  14000

  12000

  10000                            チケット総数

   8000

   6000

   4000                                   解決済みチケット

   2000

      0
     Jan-07   Jan-08   Jan-09   Jan-10   Jan-11    Jan-12
Jenkins User Conference                                Tokyo, July 29th 2012




   インストール総数
                                                  43000
 45000

 40000

 35000

 30000

 25000

 20000

 15000
                                                 マスターの数
 10000

  5000

     0
    Jan-07   Jan-08   Jan-09   Jan-10   Jan-11    Jan-12
Jenkins User Conference   Tokyo, July 29th 2012
Jenkins User Conference   Tokyo, July 29th 2012




  世界中で使われています
Jenkins User Conference                                Tokyo, July 29th 2012




                          http://www.flickr.com/photos/randar/3879926596/
Jenkins User Conference   Tokyo, July 29th 2012
Jenkins User Conference       Tokyo, July 29th 2012




  他にもフロントエンドでは…
  • フロントエンド周りの現代化
     – Prototype 1.7, YUI 3
     – CSSセレクタなどにネイティブ実装を利用
  • ページロード時間の改善
     – gzip圧縮を全ページでon
     – プラグイン内の画像等のキャッシュの改善
     – ページ表示に要するリクエストを減らす
  • jQuery等ライブラリプラグインの整備
  • JavaScriptモジュール化
Jenkins User Conference   Tokyo, July 29th 2012




  バックエンドの機能拡張
  • マルチ構成プロジェクトの改善
     – #N, #N+1, …の並列ビルド
     – カスタム作業ディレクトリによる構成間の
       ディレクトリ共有
     – 動的に値が変化する軸
     – SCMチェックアウト動作の拡張ポイント化
     – 実行順序/フィルタリング
       の拡張ポイント化
Jenkins User Conference    Tokyo, July 29th 2012




  バックエンドの機能拡張
  • REST APIの改善
     – APIトークン
     – JSONのインデント付き出力
     – 「tree」パラメータによる出力データの選択
  • コマンドラインクライアントの改善
     – 通信路の暗号化
     – SSH公開鍵認証
     – 汎用sshクライアントによるCLI
Jenkins User Conference   Tokyo, July 29th 2012




  それ以外にも色々な改善
  •   Subversion 1.7 サポート
  •   40ヶ国語への地域化
  •   ジョブ名への名前規約の強制モード
  •   ANSI カラーコード対応
  •   コアのより一層のプラグイン化
  •   「ビルド後の処理」の並び替え
  •   Mavenプロジェクトでの任意のビルダ対応
  •   cron文法におけるハッシュのサポート
Jenkins User Conference     Tokyo, July 29th 2012




  Rubyによるプラグイン開発
  • 切り捨てたもの
     – Java, Maven, Jelly
  • ツールによる開発環境の改善
     – コードのリロード
     – スケルトン生成
     – ビルド・リリースのサポート
  • 詳しくは柴田さんのセッションへどうぞ
Jenkins User Conference    Tokyo, July 29th 2012




  プラグイン開発者向けの改善
  • GuiceによるIoCのコアへの取り込み
  • JUnit4によるテストハーネス
  • GroovyによるHTML生成
     – デバッガが使える
     – IDEによるコード補完が使える
  • 拡張ポイントの拡充
  • Gradle, JRebelのサポート
Jenkins User Conference                                  Tokyo, July 29th 2012




                          http://www.flickr.com/photos/sushicam/7211787664/
Jenkins User Conference   Tokyo, July 29th 2012
Jenkins User Conference     Tokyo, July 29th 2012




  BuildHive.cloudbees.com
  • タダで使えます
  • 使ってみて感想を送ってください
Jenkins User Conference                 Tokyo, July 29th 2012




  Jenkins Enterprise by CloudBees
  • サポート+企業向け追加プラグイン
  • 5月に新版をリリースしました
     – アクティブ/スタンバイ方式による高い可用性
     – 検証済みマージ機能
     – アップデートセンターを立てて社内プラグイ
       ンの配布
  • CloudBees Free Enterprise Plugins
  • 詳細はCloudBeesの配布物をどうぞ
Jenkins User Conference   Tokyo, July 29th 2012
Jenkins User Conference               Tokyo, July 29th 2012




  法人格の取得
  • 「Software in the Public Interest」に加盟
     – F/OSSプロジェクトを促進するNPO団体
     – Debian, Drupal, PostgreSQLなど
  • SPI経由で
     – お金、ドメイン名、商標などの資産を持ったり
     – 開発者と知的財産権に関する契約を結んだり
Jenkins User Conference            Tokyo, July 29th 2012




  寄付金集め
  • jenkins-ci.org/donate
  • 目標 $5130 をオーバーする$12000が集ま
    りました!
    – 日本からも多数ご寄付いただきました


                          $12446

                $5130
Jenkins User Conference                  Tokyo, July 29th 2012




  Jenkins CIA プログラム               http://bit.ly/x3OvFT




                          • Jenkinsについてど
                            こかで発表するなら
                            …
                           – Tシャツとステッ
                             カーを送ります
                          • 制覇した町をピン止
                            めした世界地図を
                            作っています

                          • エージェント募集中
Jenkins User Conference                               Tokyo, July 29th 2012




  ちなみにこれが本物




                          CIA旧本部ビルロビー @ バージニア州ラングレー
Jenkins User Conference       Tokyo, July 29th 2012




  暫定役員会
  • SPIにリポートするプロジェクトの意思決
    定機関

  • 自分 (CloudBees)
  • Andrew Bayer (Cloudera)
  • Dean Yu (Yahoo)
Jenkins User Conference          Tokyo, July 29th 2012




  本当の意思決定機関               http://bit.ly/eXTY3I




  • 隔週ミーティング
     – IRC上で開催
     – 議題・参加は誰でも出来ます
     – 議事録もオンラインで見られます
Jenkins User Conference          Tokyo, July 29th 2012




  プロジェクト憲章の制定             http://bit.ly/q5GKhE




  • 不文律の明文化
     – プロジェクトの文化、仕事の仕方など
     – 新しい参加者や企業参加者にわかりやすく
  • 第三者ライブラリの
    ライセンス
  • 参加者の役割
  • 名前の利用に関する
    ガイドライン
  • 優れたプルリクエストの
    送り方
Jenkins User Conference   Tokyo, July 29th 2012




  開発者ライセンス契約 (CLA)
  • プロジェクト憲章の一環でコア開発者向
    けにCLAの提出を義務付け
     – Apacheと同じCLA・同じ仕組み
     – コアに追加されるコードの出自とそのライセ
       ンスを明文化
     – 知的財産権に関わるグレイエリアを小さくし
       て、プロジェクトとユーザーを守ります
Jenkins User Conference                           Tokyo, July 29th 2012




http://www.flickr.com/photos/acmace/4410650624/
Jenkins User Conference     Tokyo, July 29th 2012




  色々な団体のお世話に
  • jenkins-ci.org に必要なサービスを外部委託
  • 歴史的な経緯を踏まえ、一つの企業に多く
    を頼り過ぎないように
Jenkins User Conference                     Tokyo, July 29th 2012




  長期サポート(LTS)リリース
        優良リリースを決める
                                      通常リリース(毎週)




                          長期サポートリリース




    1.424.6          1.447.1    1.447.2   1.460.1



    通常リリースからのバグ修正バックポーティングのみ
Jenkins User Conference                   Tokyo, July 29th 2012




  セキュリティ勧告
  • ウェブアプリ特有のセキュリティ問題が
    Jenkinsにも
  • メーリングリストかRSSフィードで購読
     – http://jenkins-ci.org/advisories


  • 特にインターネット上でJenkinsを走らせ
    ている人向け
     – 社内LANでも無視しないで
Jenkins User Conference                    Tokyo, July 29th 2012




  サーバ管理のOSS化
  • *.jenkins-ci.org のシェルアクセスは特権
     – この権限がある人の数がツールの導入等の障
       壁になっていた
  • 解法:puppet化+オープンソース化
     – http://github.com/jenkinsci/infra-puppet
     – プル・リクエスト経由で誰でも変更を提案で
       きるように
     – 特権ユーザは変更をレビューするだけでよい
Jenkins User Conference                 Tokyo, July 29th 2012




  この他のインフラ改善
  • サーバの監視
      – http://nagios.jenkins-ci.org/
      – Pager Duty
  •   世界各地に9つのミラー
  •   自前DNSサーバ(puppet化済)
  •   Wikiへのキャッシュ導入
  •   サービスの外部委託
      – JFrogによるArtifactoryのSaaS
      – CloudBeesによるJenkinsのSaaS
Jenkins User Conference   Tokyo, July 29th 2012
Jenkins User Conference                  Tokyo, July 29th 2012




  プラグイン開発者を助ける
  • 拡張ポイントの拡充
  • プラグイン開発環境の整備
     –   Wikiの記事の拡充
     –   トレーニング講座を作りたい
     –   サンプルの拡充
     –   ツールにスケルトン生成機能
     –   よくある問題の自動検証
         • HTMLのタグずれ、@Extensionの付け間違い等
  • 日本のユーザーにもっとプラグイン開発をし
    てもらうにはどうしたら?
Jenkins User Conference       Tokyo, July 29th 2012




  スイートスポットの拡大
  • より大規模環境で快適に
     – マスター間の通信経路の導入
        • 例:マスターを超えてジョブをトリガ
     – 遅延読み込みによる起動時間の改善
     – プラグイン向けのデータベース接続レイヤ
  • 複雑なワークフローへの対応
Jenkins User Conference         Tokyo, July 29th 2012




  スイートスポットの拡大
  • 導入を簡単に
     – BuildHiveからプロジェクト作成Wizardをス
       ピンオフ
     – 標準添付のプラグインの見直し
     – プラグインのセットやお勧めの使い方をコ
       ミュニティで共有したい
Jenkins User Conference        Tokyo, July 29th 2012




  増え続けるプラグインへ対応
  • プラグインに関する情報共有
     – レビュー, インストール数, …
  • お勧めのプラグイン
     – データマイニング, 検索
     – ニュースレター
  • 言語・ターゲット向けプラグインパック?
     – iTunes プレイリストのようなイメージ
Jenkins User Conference   Tokyo, July 29th 2012




  計算機を湯水のように使えるように

  • テスト実行の並列化を助けたい
  • 多数の計算機を跨ぐ作業を簡単にしたい
     – 負荷テスト、システムテストなど
  • それらを支える優れた可視化を提供した
    い
Jenkins User Conference   Tokyo, July 29th 2012




  まとめ
  • 色々な取り組みが成果を出しました

  • 今後も色々な取り組みが進んでいきます

  • フィードバックを送ってください
     – よければ開発に参加してください

  • 今日一日を楽しんでください
Jenkins User Conference   Tokyo, July 29th 2012




  本日の会場
  • ここ「さったホール」
  • 5階 505, 4階 406
     – 混雑が予想されるので詰めてお座りください
Jenkins User Conference   Tokyo, July 29th 2012

Jenkins user conference 東京

  • 1.
    Jenkins User Conference Tokyo, July 29th 2012 Jenkins ユーザ・カンファレンス 2012 川口耕介 CloudBees, Inc. Jenkinsクリエータ @kohsukekawa http://cloudbees.com/ #juc2012 #juc2012_satta #juc2012_S505 #juc2012_S406
  • 2.
    Jenkins User Conference Tokyo, July 29th 2012 有難うございます!
  • 3.
    Jenkins User Conference Tokyo, July 29th 2012 運営スタッフの皆さん 中村さん 佐藤さん 久川さん さぼてんさん 曽我部さん 玉川さん (@ikikko) (@lino_s) (@ryomah) (@cactusman) (@ssogabe) • その他の皆さん – 法政大学 – ボランティアの皆様 今井さん (@masanobuimai)
  • 4.
    Jenkins User Conference Tokyo, July 29th 2012 プラチナスポンサー メディアスポンサー シルバースポンサー
  • 5.
    Jenkins User Conference Tokyo, July 29th 2012 http://www.flickr.com/photos/nasamarshall/4256459445/
  • 6.
    Jenkins User Conference Tokyo, July 29th 2012 プラグインの拡大 600 535 500 400 # of unique plugins 300 200 100 new plugins/week releases/week 0 Jan-07 Jan-08 Jan-09 Jan-10 Jan-11 Jan-12
  • 7.
    Jenkins User Conference Tokyo, July 29th 2012 チケット数の変移 14500 16000 14000 12000 10000 チケット総数 8000 6000 4000 解決済みチケット 2000 0 Jan-07 Jan-08 Jan-09 Jan-10 Jan-11 Jan-12
  • 8.
    Jenkins User Conference Tokyo, July 29th 2012 インストール総数 43000 45000 40000 35000 30000 25000 20000 15000 マスターの数 10000 5000 0 Jan-07 Jan-08 Jan-09 Jan-10 Jan-11 Jan-12
  • 9.
    Jenkins User Conference Tokyo, July 29th 2012
  • 10.
    Jenkins User Conference Tokyo, July 29th 2012 世界中で使われています
  • 11.
    Jenkins User Conference Tokyo, July 29th 2012 http://www.flickr.com/photos/randar/3879926596/
  • 12.
    Jenkins User Conference Tokyo, July 29th 2012
  • 13.
    Jenkins User Conference Tokyo, July 29th 2012 他にもフロントエンドでは… • フロントエンド周りの現代化 – Prototype 1.7, YUI 3 – CSSセレクタなどにネイティブ実装を利用 • ページロード時間の改善 – gzip圧縮を全ページでon – プラグイン内の画像等のキャッシュの改善 – ページ表示に要するリクエストを減らす • jQuery等ライブラリプラグインの整備 • JavaScriptモジュール化
  • 14.
    Jenkins User Conference Tokyo, July 29th 2012 バックエンドの機能拡張 • マルチ構成プロジェクトの改善 – #N, #N+1, …の並列ビルド – カスタム作業ディレクトリによる構成間の ディレクトリ共有 – 動的に値が変化する軸 – SCMチェックアウト動作の拡張ポイント化 – 実行順序/フィルタリング の拡張ポイント化
  • 15.
    Jenkins User Conference Tokyo, July 29th 2012 バックエンドの機能拡張 • REST APIの改善 – APIトークン – JSONのインデント付き出力 – 「tree」パラメータによる出力データの選択 • コマンドラインクライアントの改善 – 通信路の暗号化 – SSH公開鍵認証 – 汎用sshクライアントによるCLI
  • 16.
    Jenkins User Conference Tokyo, July 29th 2012 それ以外にも色々な改善 • Subversion 1.7 サポート • 40ヶ国語への地域化 • ジョブ名への名前規約の強制モード • ANSI カラーコード対応 • コアのより一層のプラグイン化 • 「ビルド後の処理」の並び替え • Mavenプロジェクトでの任意のビルダ対応 • cron文法におけるハッシュのサポート
  • 17.
    Jenkins User Conference Tokyo, July 29th 2012 Rubyによるプラグイン開発 • 切り捨てたもの – Java, Maven, Jelly • ツールによる開発環境の改善 – コードのリロード – スケルトン生成 – ビルド・リリースのサポート • 詳しくは柴田さんのセッションへどうぞ
  • 18.
    Jenkins User Conference Tokyo, July 29th 2012 プラグイン開発者向けの改善 • GuiceによるIoCのコアへの取り込み • JUnit4によるテストハーネス • GroovyによるHTML生成 – デバッガが使える – IDEによるコード補完が使える • 拡張ポイントの拡充 • Gradle, JRebelのサポート
  • 19.
    Jenkins User Conference Tokyo, July 29th 2012 http://www.flickr.com/photos/sushicam/7211787664/
  • 20.
    Jenkins User Conference Tokyo, July 29th 2012
  • 21.
    Jenkins User Conference Tokyo, July 29th 2012 BuildHive.cloudbees.com • タダで使えます • 使ってみて感想を送ってください
  • 22.
    Jenkins User Conference Tokyo, July 29th 2012 Jenkins Enterprise by CloudBees • サポート+企業向け追加プラグイン • 5月に新版をリリースしました – アクティブ/スタンバイ方式による高い可用性 – 検証済みマージ機能 – アップデートセンターを立てて社内プラグイ ンの配布 • CloudBees Free Enterprise Plugins • 詳細はCloudBeesの配布物をどうぞ
  • 23.
    Jenkins User Conference Tokyo, July 29th 2012
  • 24.
    Jenkins User Conference Tokyo, July 29th 2012 法人格の取得 • 「Software in the Public Interest」に加盟 – F/OSSプロジェクトを促進するNPO団体 – Debian, Drupal, PostgreSQLなど • SPI経由で – お金、ドメイン名、商標などの資産を持ったり – 開発者と知的財産権に関する契約を結んだり
  • 25.
    Jenkins User Conference Tokyo, July 29th 2012 寄付金集め • jenkins-ci.org/donate • 目標 $5130 をオーバーする$12000が集ま りました! – 日本からも多数ご寄付いただきました $12446 $5130
  • 26.
    Jenkins User Conference Tokyo, July 29th 2012 Jenkins CIA プログラム http://bit.ly/x3OvFT • Jenkinsについてど こかで発表するなら … – Tシャツとステッ カーを送ります • 制覇した町をピン止 めした世界地図を 作っています • エージェント募集中
  • 27.
    Jenkins User Conference Tokyo, July 29th 2012 ちなみにこれが本物 CIA旧本部ビルロビー @ バージニア州ラングレー
  • 28.
    Jenkins User Conference Tokyo, July 29th 2012 暫定役員会 • SPIにリポートするプロジェクトの意思決 定機関 • 自分 (CloudBees) • Andrew Bayer (Cloudera) • Dean Yu (Yahoo)
  • 29.
    Jenkins User Conference Tokyo, July 29th 2012 本当の意思決定機関 http://bit.ly/eXTY3I • 隔週ミーティング – IRC上で開催 – 議題・参加は誰でも出来ます – 議事録もオンラインで見られます
  • 30.
    Jenkins User Conference Tokyo, July 29th 2012 プロジェクト憲章の制定 http://bit.ly/q5GKhE • 不文律の明文化 – プロジェクトの文化、仕事の仕方など – 新しい参加者や企業参加者にわかりやすく • 第三者ライブラリの ライセンス • 参加者の役割 • 名前の利用に関する ガイドライン • 優れたプルリクエストの 送り方
  • 31.
    Jenkins User Conference Tokyo, July 29th 2012 開発者ライセンス契約 (CLA) • プロジェクト憲章の一環でコア開発者向 けにCLAの提出を義務付け – Apacheと同じCLA・同じ仕組み – コアに追加されるコードの出自とそのライセ ンスを明文化 – 知的財産権に関わるグレイエリアを小さくし て、プロジェクトとユーザーを守ります
  • 32.
    Jenkins User Conference Tokyo, July 29th 2012 http://www.flickr.com/photos/acmace/4410650624/
  • 33.
    Jenkins User Conference Tokyo, July 29th 2012 色々な団体のお世話に • jenkins-ci.org に必要なサービスを外部委託 • 歴史的な経緯を踏まえ、一つの企業に多く を頼り過ぎないように
  • 34.
    Jenkins User Conference Tokyo, July 29th 2012 長期サポート(LTS)リリース 優良リリースを決める 通常リリース(毎週) 長期サポートリリース 1.424.6 1.447.1 1.447.2 1.460.1 通常リリースからのバグ修正バックポーティングのみ
  • 35.
    Jenkins User Conference Tokyo, July 29th 2012 セキュリティ勧告 • ウェブアプリ特有のセキュリティ問題が Jenkinsにも • メーリングリストかRSSフィードで購読 – http://jenkins-ci.org/advisories • 特にインターネット上でJenkinsを走らせ ている人向け – 社内LANでも無視しないで
  • 36.
    Jenkins User Conference Tokyo, July 29th 2012 サーバ管理のOSS化 • *.jenkins-ci.org のシェルアクセスは特権 – この権限がある人の数がツールの導入等の障 壁になっていた • 解法:puppet化+オープンソース化 – http://github.com/jenkinsci/infra-puppet – プル・リクエスト経由で誰でも変更を提案で きるように – 特権ユーザは変更をレビューするだけでよい
  • 37.
    Jenkins User Conference Tokyo, July 29th 2012 この他のインフラ改善 • サーバの監視 – http://nagios.jenkins-ci.org/ – Pager Duty • 世界各地に9つのミラー • 自前DNSサーバ(puppet化済) • Wikiへのキャッシュ導入 • サービスの外部委託 – JFrogによるArtifactoryのSaaS – CloudBeesによるJenkinsのSaaS
  • 38.
    Jenkins User Conference Tokyo, July 29th 2012
  • 39.
    Jenkins User Conference Tokyo, July 29th 2012 プラグイン開発者を助ける • 拡張ポイントの拡充 • プラグイン開発環境の整備 – Wikiの記事の拡充 – トレーニング講座を作りたい – サンプルの拡充 – ツールにスケルトン生成機能 – よくある問題の自動検証 • HTMLのタグずれ、@Extensionの付け間違い等 • 日本のユーザーにもっとプラグイン開発をし てもらうにはどうしたら?
  • 40.
    Jenkins User Conference Tokyo, July 29th 2012 スイートスポットの拡大 • より大規模環境で快適に – マスター間の通信経路の導入 • 例:マスターを超えてジョブをトリガ – 遅延読み込みによる起動時間の改善 – プラグイン向けのデータベース接続レイヤ • 複雑なワークフローへの対応
  • 41.
    Jenkins User Conference Tokyo, July 29th 2012 スイートスポットの拡大 • 導入を簡単に – BuildHiveからプロジェクト作成Wizardをス ピンオフ – 標準添付のプラグインの見直し – プラグインのセットやお勧めの使い方をコ ミュニティで共有したい
  • 42.
    Jenkins User Conference Tokyo, July 29th 2012 増え続けるプラグインへ対応 • プラグインに関する情報共有 – レビュー, インストール数, … • お勧めのプラグイン – データマイニング, 検索 – ニュースレター • 言語・ターゲット向けプラグインパック? – iTunes プレイリストのようなイメージ
  • 43.
    Jenkins User Conference Tokyo, July 29th 2012 計算機を湯水のように使えるように • テスト実行の並列化を助けたい • 多数の計算機を跨ぐ作業を簡単にしたい – 負荷テスト、システムテストなど • それらを支える優れた可視化を提供した い
  • 44.
    Jenkins User Conference Tokyo, July 29th 2012 まとめ • 色々な取り組みが成果を出しました • 今後も色々な取り組みが進んでいきます • フィードバックを送ってください – よければ開発に参加してください • 今日一日を楽しんでください
  • 45.
    Jenkins User Conference Tokyo, July 29th 2012 本日の会場 • ここ「さったホール」 • 5階 505, 4階 406 – 混雑が予想されるので詰めてお座りください
  • 46.
    Jenkins User Conference Tokyo, July 29th 2012

Editor's Notes

  • #3 当初の予想を遥かに上回る海外のJUCよりダントツに大きい
  • #10 大きいところならどこでも全て入っているといっても過言ではない。
  • #13 Installing plugins without restartSearch in update centerUIBreadcrumbApply buttonContext menu“From this plugin”(?)Intra config page linkReorderable publishers
  • #21 The ui-changes branchBuildHive