なみひらブログ

学んだことを日々記録する。~ since 2012/06/24 ~

「Jenkins ユーザ・カンファレンス 2015 東京」に行ってきました

「Jenkins ユーザ・カンファレンス 2015 東京」に行ってきました。

» Jenkins ユーザ・カンファレンス 2015 東京 日本Jenkinsユーザ会

開催概要

会場雰囲気

f:id:Namihira:20150111122452j:plain

学んだことと所感

  • dockerという単語が多く出てきて、テスト時の環境をコンテナとして作成するのが流行りらしい。
    • ソースコード取得(git clone)
    • dockerでテスト環境作成
    • そのテスト環境でテスト
    • テストが完了したら、リポジトリ登録または破棄
  • dockerは触っとかないといけない雰囲気( ´・ω・`;)
  • 各ジョブの整理ができていなかったので、さっそくworkflow-pluginを使ってみる

セッションメモと雑記

基調講演 Jenkinsプロジェクトの現状とワークフロー

  • Jenkinsの生みの親、川口さんの基調講演
  • 最近のJenkins事情
    • DotCI
    • UI周りを更新した。
      • Jenkinsを最新にすると分かる。
    • dockerにJenkinsのサーバイメージが登録されている。
  • workflow-plugin
    • 最近、力を入れているプラグイン
    • Workflow plugin is 1.0 | Jenkins CI
    • 設定をGUIではなく、プログラミング的に書けるようになっている。~Groovy
    • いままでは、1つの処理をCIするようにできるような思想になっている。
      • 問題点
        • 各フェーズのジョブが存在する。
        • 似たようなジョブが存在する。
    • Jenkins 実行コンソールに承認ボタンがでたりする
      • 人間の判断結果を元に分岐できるようになる。

はてなにおける継続的デプロイメントの現状とDockerの導入

  • はてなの人
  • サービスごとにJenkinsを用意している。
    • 関係者が少ないほうが、メンテナンスしやすい。
  • はてなダイアリーがメンテナンスできなくなったので、はてなブログを立ち上げた。
  • 本番に近い環境でテストするべき。
  • Jenkinsの設定を複雑にしない。
    • メンテンスの属人性をなくす。
  • 原則、設定はスクリプトファイルで管理する。例:script/jenkins/xx.sh
  • チャットツールは、Slack
  • タスク管理は、Trello
  • Gitのブランチ名がついたホスト名の環境を用意した。dockerで実現した。
    • 最初は前段のNginxでのフォワーディングで解決した。
    • ポート番号解決は、docker APIを使って解決した。
    • Jenkinsサーバ上で、イメージを立てる(git clone -> docker build -> docker rm -> docker run)。
      • ブランチ視点は、UI上のパラメータを手動で実行。
    • 小ネタ:どの環境を使っているか分かるように、faviconを変更している。
  • テストデータは、別途DBサーバを立てており、全てのコンテナが参照している。
    • 変更後も動作するスキーマ変更しか認めていない。
  • あとで調べる。
    • Mackerel:サーバ管理サービス
    • Android Emulator Plugin

クックパッドにおけるJenkinsの活用

「Infrastructure as a CodeにおけるJenkinsの役割」 ~環境構築も継続的インテグレーションを行う時代です~

  • Chef化したら、問題が発生した。
    • コードが複雑、Chefだけで完結できない(外部サービスなど)。
    • Chef serverが多くなった。
  • 各構築フェーズを意識する
    • OSセットアップ(keckstart) -> ミドルウェアセットアップ(Chef) -> アプリケーションセットアップ/デプロイ(Serf)
  • もうひとつのレイヤーがあった。
    • サービス連携のフェーズ
      • Serverspecでテストする。
      • LBにサーバを追加する。
      • 失敗したら、本番への投入をしない。
      • 受け入れテスト、LBへの追加
  • Chefの開発にdockerを使った。
  • Jenkinsの冗長化した
    • データの同期は今はJenkinsの同じ設定をしているだけ。lsyncdを使いたい。
    • マスターが落ちたら、Serfでスレーブに通知する。すレームがAWS API経由でEIPを自分に向けるようにした。
  • あとで調べる
    • lsyncd
    • Chef Zero
    • Build Flow Plugin
    • Build Graph:構築フローの視覚化できる

LT大会

  • セキュリティテスト、パフォーマンステストについて
    • VADDYというサービスの紹介
    • Jenkisnプラグインある
    • 現在、外部委託で確認している。
      • 問題:リリース直前に大量にみつかる。
      • 初期から実施すべき。
    • GoogleXSSの自動テストの仕組みを開発しようとしている。
  • 金融系でのJenkins活用事例
    • 開発ツールを入れたパッケージを作った(VMイメージ)
  • Jenkinsとの連携ツールについて
    • チャットアプリ:Stack
    • GitHubのクローン:Gitlab。一年使って問題なし。
    • iOS/Androidのテストアプリの配布:deploygate
      • アプリについて任意のメッセージを付与できる。ビルド番号、コミット歴など。
  • Jenkinsの3Dロゴについて
    • 3Dロゴが提供されたので、そのイメージ遊んでみた。物理エンジン適用など。
  • Jenkinsの使い方について

Jenkins導入する本当の理由を考えてみた

  • 聴講できていない(´・ω・`)

その他

  • 発表の質疑応答の際、Jenkins開発者(川口さん)が自らマイク運びをしていた。
    • あとustreamの調整もしてた。
  • Chatツールが必ずHipChatだったけど、世間的にそうなのでしょうか?(´・ω・`)←IRCユーザ