by shigemk2

当面は技術的なことしか書かない

2013年Jenkinsの歩み #jenkinsstudy

GoogleやMicrosoftでもjenkinsを使ってるお 2,500,000のビルド Winstone から jetty://へ Credentials プラグインの一元化により、鍵情報を保存して二重入力を避ける

CloudBees オープンソース化 階層構造上に整理 文芸的ビルド

ジョブを作らなくてもブランチを切ってビルドされる

800のスレッドを要する スレーブ1コあたり1つで出来るように

システム資源の有効活用

マスタースレーブ jar キャッシュ jar単位でスレーブ上にキャッシュできるように →複数のスレーブを効率よく捌く

SSHフローコントロール ますたーがスレーブにデータ送信をACKで制御する データの送受信に200KB必要 →帯域を効率よく使えていない?

メモリ 大規模テストリポート HTTPセッション 遅延ロード

安定性 「バグを出さない!!」 LTS 1.532.1

Jenkinsの統合テスト 多様な環境下でのJenkinsの起動 最終成果物のテスト Ruby selenium capybara cucumber/rspec Dockerによる外部サービスの提携テスト

一流講師による一日集中ワークショップ アジャイルアカデミーとか

CloudBees

OSXの仮想化は困難 ファイルシステム ZFS 1台の計算機のなかでいろいろつっこむ copyonright

YahooがJenkinsをはじめました。 #jenkinsstudy

f:id:shigemk2:20131220194541p:plain

Yahoo プロモーション広告とは

Yahoo プロモーション広告 (テキストや画像をwebで配信する クリック)

いわゆるweb広告

現状について

今年の夏の甲子園の時期にアクセスが激増

CI+CDの現状

Oops2名と執事

9割くらいのコンポーネントでCI+CD化してれぅ

CIモデル

GitHub Enterprise

Jenkins Slave

Jenins Master

リポジトリ(Stagingでの検証 本番での展開)

周辺構成

Master 3 vs Slave 10

ジョブ 300くらい

所要時間 30秒ー1時間

プラグイン git/github coverity rundeck

デプロイツール Fabric/Capistrano/Rundeck(検証段階)

ここまでの道程

有志によるボトムアップ

組織化とエバンジェリスト

生産性と安定性を訴える

独自のビルド実行スクリプトにより統一されたデプロイメントパイプラインを実現

継続的デリバリー

コミット コンポーネント

パッケージ アセンブリ

デプロイ スモークテスト

デプロイ 機能テスト

デプロイ パフォーマンステスト

デプロイ 運用テスト

デプロイ 本番

ワンクリックデプロイを実現する!!

管理職の理解や強力なサポートもあってCIやCDを実現できた!!

Jenkinsのジョブから1Clickでデプロイを実現できた。

数千数百 数時間から数日へ 運用に人は必要なくなった

トラブル事例

1 SCMポーリングにより、GitHubEnterpriseに負荷が集中

Polling must die!!

pollingをやめてweb hookを有効に

2 稟議を通すのが結構大変

  • 仮想かんきょうを有効活用しよう
  • Jclousプラグイン
  • (セキュリティの面から一部ソースコードを改修してごにょごにょ)

OpenStackベースの社内PaaSと連携→物理サーバ不要!!

ビルドが終わったら仮想サーバも削除するからシンプルでリソースを節約できる

細かな問題

  • 細かいフロー
  • ジョブ数の増加(新しく追加だけされてるから執事が無双へ)
  • テストコード
  • もっと高度なデプロイに挑戦(インフラとか)
  • 全社的にはまだまだ普及できていない
  • 他の部への伝承や教育

まとめ

Jenkinsを使って CI CDを実現するために必要なこと

  1. エバンジェリストたち(重要性を理解し、周囲を巻き込む)
  2. ルールや議論はほどほどで、まずは(ゆるめで)やってみること

序々にやっていくこと。勉強会をやるにしても株主総会や重要な取引先との プレゼンじゃないので、ゆるくやること。

Jenkinsエンタープライズについて #jenkinsstudy

f:id:shigemk2:20131220194541p:plain

CI 自動テストに関する何でも屋として活動中 JenkinsとSeleniumをよく使う

Jenkins Enterprise by CloudBeesの販売代理店も担当しているお

Jenkinsの有☆償☆版

  • サポートが受けられる
  • 独自のプラグイン
  • By CloudBee 川口氏を含むプロフェッショナルのサポート

JEBCの特徴1 テクニカルサポート

開発者はOSS版とほぼ同じ 有償の部分だではなくOSSのとこもサポートしてくれる

JEBCの特徴2 豊富なプラグイン

基本的には大規模開発向けのものが多いけど。

  • 稼働率向上 High Availavility(マスター執事が死んだらスレーブ執事が再起動) Folders Plugin(フォルダーにジョブをまとめて、変数とかを使いまわす) ** Templates Plugin(ジョブのテンプレ化)

  • 安全に運用 Role-Base Access Control Plugin(ビルド権限をチームで権限委譲とかやっちゃう。管理者権限をうまく分散☆) Secure Copy Plugin(Jenkins間で成果物を安全にやり取り) ** Custom Update Center Plugin(インストールするJenkinsのコアやプラグインのバージョンを社内で縛ることが出来る機能)

  • スレーブを使いたおす Even Scheduler Plugin スレーブの割り当てアルゴリズムを変更する VMWare vCenter Auto-Scaling Plugin(マシンプールから自動的にスレーブを生成わりあて) ** Skip Next Build Plugin(指定した時間だけビルドをストップする)

宣伝

Agile Achademy(Jenkins Boot Camp)

LT おひとりさまから1年後 #jenkinsstudy

f:id:shigemk2:20131220194541p:plain

開発者じゃない情シス

  • IntelliJに魅かれた
  • Jenkinsのプラグインを作ってみた

  • 変わっていないこと 会社 立場 小遣いなど

  • 変わったこと 執事の立ち位置

執事の立ち位置

  • パートナー会社によりジョブ管理ツールが到☆来 (執事解雇のお知らせ?)

  • 「自動化できた」でよろこぶ段階はもう終わった

  • 「自動化を意識する」という習慣がみんなに根付いた

執事に期待すること

  • 自動化のスタートアップを支援すること
  • 手順の妥当性を繰り返し検証

記録し、エラーを直し、改善し、リリースを見届ければそれでいい

改善、修正のないジョブは出ていってもらってもよいくらいでは

情シスから見た執事の方向性

  • サーバのセットアップやテストにフォーカス
  • 内製のシステム/業務アプリのテストにフォーカス
  • 情シス部門の雑多なタスクの自動化にフォーカス

執事の持つ意味について

Jenkinsとはツールではなく執事キャラ

まとめ

  • 執事の立ち位置が変わった
  • 記録し、エラーを直し、改善し、リリースを見届ければそれでいい

改善と課題解決が必要なときには執事に頼ろう

自動化できないことにこそみんなの時間を割こうではないか

せんじゅくん

LT Jenkins with Docker #jenkinsstudy

f:id:shigemk2:20131220194541p:plain

ジョブごとにクリーンな環境

マスタからDockerがインストールされたジョブにたいしビルドを実行

Docker + Jenkins + serverspecでpuppetのmanifestをCIする

スライドあるお

まとめ

Dockerを使うことでクリーンな環境が一瞬で手にはいる JenkinsとDockerを組合せると工夫次第でもっと面白いことが 出来るかも?

デモ環境をVagrantで公開する予定だそう。