第8回Jenkins勉強会に参加してみたのでメモ

1日間が空いてしまいましたが、 12/20 (金) に開催された 第8回Jenkins勉強会 に参加してみたので、完全に個人的なメモのレベルですが公開します。

(ちなみに参加者宛に事後メールでお知らせされた、お弁当箱を忘れたアカウントはこちらになります。。。関係者にご迷惑おかけし申し訳ございません。。)

Jenkins勉強会 自体はじめての参加で、 Jenkins もあまり使いこなせていないので、正直ちょっと不安もあったのですが、ビールとおつまみもいただけたし、発表者の皆さんの Jenkins 愛が伝わってきたし、とても楽しくためになる勉強会でした。

メモ

1. 川口さん:「2013年Jenkinsの歩み」

2013年

  • 年間コミット数は Linux kernel (5万超)の半分ほど(2万超)に
  • 内部エンジンが Winstone から Jetty になって早くなった
  • Credentials プラグイン: プラグインごとにキー情報もたなくてすむように
  • "高度な(マニアックな)機能" トグルでまとめた

Cloudbees のプロジェクト

"文芸的ビルド"
  • README.md の Build セクションを Jenkins が理解してブランチごとのジョブを自動で作ってビルドする
X1K
  • = 1000 executer でもだいじょうぶなように
  • slave 1つにつき 4ssh + 1exe = 6
  • SSH 接続の改善、マスターから返す ACK のための帯域 200K いるけど 128K に制限されていたので 4M に拡張
  • メモリ改善: 大量リポートの処理
安定化
  • Ruby + selenium + capybara rspec でテスト
  • 外部サービスとの連携テストのために Docker 使う
Jenkins Operations Center

社内Jenkins をまとめた管理するようなやつ、マスターのマスター、SSOなど

Mac OSX のための高速化
  • OS、QEMU レベルまで踏み込んで仮想化
  • ZFS 利用して、 workspace の差分クローン? (よく分かってません)

2. ヤフー石川さん

  • GithubEnterprise から web hook で Jenkins マスターをキック
  • Jenkins マスタ 3台、それぞれに対して スレーブ 10 台、構成管理などと連携
  • Fabric / Capistrano / Rundeck 使い分け検証中

  • ボトムアップで CI/CD 進めた

  • 継続的デリバリ本的なパイプライン
  • まだ完全自動ではない、社内ワークフローのため。ワンクリックではできる

  • 手動で 2日かかっていたデプロイが 数時間で済むように

  • 今は 2 人でまわせる
ハマった1: SCMポーリングで GHE に負荷が集中

→ Web Hook でやるようにした ("Polling must die")

ハマった2: 予算ないと slave 増やせない

→ Jclouds プラグイン: * OpenStack ベースの社内 PaaS と連携で物理サーバ不要に * ビルド終わったら仮想環境も削除、リソース削減

まとめ

  1. エバンジェリストだいじ、開発プロセスの見直しなど
  2. ルールや議論はほどほどで、まずやってみる

質疑応答より

  • (Web hook よりポーリングがよい場合があるという話に対して) Web hook でビルド実行数が多くなりすぎる場合は "quiet period" 使うとよい (川口さん)

  • かつてはプライベートクラウドもってたが古くなったので Open なほうに移行していった ** そのほうが社内(セキュリティ)ルールにあわせてカスタマイズしやすい

3. 株式会社シフト 玉川さん:Jenkinsエンタープライズについて

  • シフトさんは Cloudbees とパートナー組んでる
  • CI や 自動テスト導入のお手伝い
  • Jenkins Enterprise 版、売ってます

Enterprise 版は何がうれしい?

  • サポートうけられます
  • Enterprise only のプラグインつかえます (特に大規模向け)

Enterprise 版のプラグイン紹介

稼働率向上: ジョブ増えすぎたときに
  • High Availability: マスタ落ちたときスタンバイ機が自動的に機動 ** Operations Center がそれのさらに高度な管理アプリ
  • Folders Plugin ** フォルダごとコピーしてジョブ管理、ビルドフローごとコピーできる、環境変数フォルダ単位で定義
  • Templates Plugin ** 親テンプレートから変更を伝播、 Builder & Job Template、ビルド手順で Builder Temlate のもの選択・テンプレで指定したパラメータ使える、ジョブテンプレでジョブ定義のXMLで一部を変数化・実ジョブでは変数部分だけ設定・テンプレの定義変えると実ジョブも変わる (テンプレというか継承っぽい感じ?)
安全
  • Role-base access control ** 柔軟な権限管理、ロール→グループ→ユーザ、グループは入れ子にできる、ジョブに対してできること
  • Secure copy ** Jenkins 間で成果物をセキュアにコピー
  • Custom Update Center ** 社内アップデートセンターみたいな
リソース最適化
  • Even Scheduler ** Jenkins はデフォルトではやったことあるスレーブにジョブわりあてるらしい、それを今あいてるやつ使うように
  • VMware vCenter Auto-scaling ** VMware 連携
  • Skip Next Build ** 指定した期間、ビルド実行しなようにするなど

LT発表

LT のほうは各発表者さんがスライド/ブログ公開されてるので、そちらへリンクさせていただきます。

  1. @akiko_pusu さん:『おひとりさま〜』の1年後 おひとりさまから1年後。

  2. @superbrothers さん:Jenkins with Docker 第8回Jenkins勉強会で「Jenkins with Docker」というLTをしました #jenkinsstudy

感想など

  • Cloudbees のサービスや、Jenkins Enterprise など、組織的に Jenkins フルで活用していくなら欲しくなるであろう機能が、まさに痒いところに手が届く感じでニーズ汲み取ってるなーと思った

  • Enterprise 版のプラグインは一部フリーで公開されていると知ったのでこちらは近いうちに試してみたい ** → https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Free+Enterprise+Plugins

  • 少し前に参加したシステムテスト自動化カンファレンスと参加者層は多少なりともかぶってたのかなという印象

  • 一方で、内容的にはテスト自動化というよりは構成管理とからめた自動化 (仮想化や Docker など)の話も多く、 Jenkins の利用シーンの広がりも感じた ** 個人的にまだあまりよくしらない領域なので、今回興味をもついいきっかけになった

  • ビール配られた後の歓談タイムではなんとなく隣の人と話すような雰囲気で、人見知りな僕はちょっと戸惑いましたが、幸い話しかけてもらえて、なおかつ共通の知り合いがいることなど分かり、Jenkins どう使ってるなどいろいろ話せたのでとてもよかった

運営および発表者の方々、ありがとうございました。 また機会があれば参加してみたいです。(今度は忘れ物しないように。。。)