@nobuokaさん はてなのアプリケーションエンジニア
jsやcssの静的ファイル変換 Perlなのでコンパイルはない 開発プロセスはブログによく挙がっている はてな製サーバ監視ツールMackerelはscalaで作っているのでビルドが必要
scala in perl companyという発表もある
- サービスごとに必要なライブラリやプラグインが違う
- 関係者が少ない方が運用しやすい
Jenkinsサーバの構築はChefで構築し各プロジェクトの ビルドやコマンドもChefで入れている
Jenkinsの設定を複雑にさせないために Jenkinsのビルドコマンドもプロジェクト内で管理(script/jenkins.sh)
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プラグインの導入を検討中
開発中の機能を素早く見たい
対象はfeaturesブランチやdevelブランチ
stagingやmasterはcapistranoでデプロイ
sh
よりもrake
タスク書いてる
nginxのluaリバプロでアクセスを解決していた https://{ブランチ名}.hoge/ -> :PORT
nginxのリバプロの裏にdockerのコンテナとポート番号を管理するWebアプリを 挟んでdocker runのEXPORTポートを気にしないようにさせた
dockerイメージを最初からビルドするのにファイルのコピーが時間が掛かり合計30分かかる ファイルのコピーはdocker build時にキャッシュされるので2分弱まで短縮された
コンテナ内でテストを実行してからデプロイ
高井さん
- 意図しない変更を予防
- 再現可能で自動化
- リソースが集約できる
テスト時間の短縮の変遷
- マルチプロセス化
- 分散化(remote_spec)
- rrrspec(トリプルrspec)
- rrrspecの紹介
- エラーの放置はやっぱりよくない
- ciでレポートをとって普段のパフォーマンスの変化のマトリクスも収集
レスポンスタイムとかの情報
サイバード本田さん、藤原さん
- Chef Serverの導入したがデプロイ含め全てをChefでやってしまった
- Chef ServerがSPOF
- ログ収集をしていなかった
- べき等性が担保されていないレシピ
Bootstrap, Configuration, Orchestrationの層を意識してレシピを見直した さらにもう一つのレイヤを考えた Releasalization(造語)レイヤ サービス提供のプロビジョニング
これまではデプロイ管理のみでしか利用していなかった Chefが全体制御を行うように変更した Jenkinsが全体を管理してChefとかを実行 with Build Flow Plugin Build Graphで構築フローを視覚化
Configuration: Chef Solo Orchestration: Serf
Jenkinsが止まると困る
Auto Scale時にchef ServerやJenkinsへのリクエストが増えすぎると タイムアウトになってしまうので工夫が必要
市川さん
vaddyっての使えるらしい
railsだとbrakemanあるね
三菱総研DCSの土井さん遠藤さん
SIerでもなくてはならないもの
@toshihirock
チャットアプリ slack pluginで簡単にできる emojiで和ませる
gitlab-merge-request-builder-plugin
iOS/Androidのテスト版アプリの配信ができる testflightみたい
こかわさん
Jenkinsおじさんの3Dデータが公開されたので遊んだ
サイバード 三浦さん 管理画面を開発しなくてもJenkinsでジョブを作って そこから実行されればいいじゃん 複雑なバッチ処理もやっている