Skip to content

Instantly share code, notes, and snippets.

@yusukegoto
Last active August 29, 2015 14:13
Show Gist options
  • Save yusukegoto/4792f342b1ccb8f43c7f to your computer and use it in GitHub Desktop.
Save yusukegoto/4792f342b1ccb8f43c7f to your computer and use it in GitHub Desktop.

概要

URL

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

@nobuokaさん はてなのアプリケーションエンジニア

はてなとJenkins

jsやcssの静的ファイル変換 Perlなのでコンパイルはない 開発プロセスはブログによく挙がっている はてな製サーバ監視ツールMackerelはscalaで作っているのでビルドが必要

scala in perl companyという発表もある

サービスごとにJenkinsサーバを構築している

  • サービスごとに必要なライブラリやプラグインが違う
  • 関係者が少ない方が運用しやすい

Jenkinsサーバの構築はChefで構築し各プロジェクトの ビルドやコマンドもChefで入れている

Jenkinsの設定を複雑にさせないために Jenkinsのビルドコマンドもプロジェクト内で管理(script/jenkins.sh)

少年ジャンプルーキーにおけるJenkinsの役割

少年ジャンプルーキー

フロントエンド

TypeScriptとLessをそれぞれコンパイルして 本番のみminified jsを利用している

ツール

  • gulp.js
  • Capistrano3
  • Git, Github Enterprise
  • Jenkins
  • Trello(タスク管理ツール)

自社サービスではないのでどんどん出すというわけでもないが それでも毎週リリースしている

ブランチ

devel(開発用) featuresはdevelから派生 staging master(リリース用)

pushごとにテストを流す 処理は上記のjenkins.shに記述 slackで通知(slackはnotificationサービスみたい)

develブランチからstagingブランチにプルリク stagingブランチからmasterブランチにプルリク

work-flowプラグインの導入を検討中

開発環境の確認でのDockerの役割

開発中の機能を素早く見たい 対象はfeaturesブランチやdevelブランチ stagingやmasterはcapistranoでデプロイ shよりもrakeタスク書いてる

Before

nginxのluaリバプロでアクセスを解決していた https://{ブランチ名}.hoge/ -> :PORT

After

nginxのリバプロの裏にdockerのコンテナとポート番号を管理するWebアプリを 挟んでdocker runのEXPORTポートを気にしないようにさせた

dockerイメージを最初からビルドするのにファイルのコピーが時間が掛かり合計30分かかる ファイルのコピーはdocker build時にキャッシュされるので2分弱まで短縮された

将来やりたい

コンテナ内でテストを実行してからデプロイ

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

高井さん

CIで守るべき価値

  • 意図しない変更を予防
  • 再現可能で自動化
  • リソースが集約できる

テスト時間の短縮の変遷

  1. マルチプロセス化
  2. 分散化(remote_spec)
  3. rrrspec(トリプルrspec)

cookpadブログ rrrspec

ざっくり内容

  • rrrspecの紹介
  • エラーの放置はやっぱりよくない
  • ciでレポートをとって普段のパフォーマンスの変化のマトリクスも収集

レスポンスタイムとかの情報

Infrastructure as a codeにおけるJenkinsの役割

サイバード本田さん、藤原さん

概念編

前の発表

Chef Serverを導入した際の問題点

  • Chef Serverの導入したがデプロイ含め全てをChefでやってしまった
  • Chef ServerがSPOF
  • ログ収集をしていなかった
  • べき等性が担保されていないレシピ

Bootstrap, Configuration, Orchestrationの層を意識してレシピを見直した さらにもう一つのレイヤを考えた Releasalization(造語)レイヤ サービス提供のプロビジョニング

Jenkinsの役割

これまではデプロイ管理のみでしか利用していなかった Chefが全体制御を行うように変更した Jenkinsが全体を管理してChefとかを実行 with Build Flow Plugin Build Graphで構築フローを視覚化

実践編

各レイヤの実践方法

Configuration: Chef Solo Orchestration: Serf

Jenkinsが止まると困る

Auto Scale時にchef ServerやJenkinsへのリクエストが増えすぎると タイムアウトになってしまうので工夫が必要

LT

Jenkinsを使った継続的セキュリティテスト

市川さん

vaddyっての使えるらしい

railsだとbrakemanあるね

Jenkinsおじさんお堅いメガバンクに就職

三菱総研DCSの土井さん遠藤さん

SIerでもなくてはならないもの

Jenkinsおじさんと楽しい連携ツールたち

@toshihirock

slack

チャットアプリ slack pluginで簡単にできる emojiで和ませる

gitlab

gitlab-merge-request-builder-plugin

deploygate

iOS/Androidのテスト版アプリの配信ができる testflightみたい

ゲーム業界の人がJenkinsさん3Dモデルで遊んでみた

こかわさん

Jenkinsおじさんの3Dデータが公開されたので遊んだ

CIじゃないほうのJenkins

サイバード 三浦さん 管理画面を開発しなくてもJenkinsでジョブを作って そこから実行されればいいじゃん 複雑なバッチ処理もやっている

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment