SlideShare a Scribd company logo
1 of 26
Download to read offline
RubyOnRails CI
Perestroika
 〜RubyOnRailsにおけるCI改善〜



   高倉利明 / @TrinityT
はじめに_自己紹介

● 高倉利明 / id:TrinityT
● 株式会社アピリッツ(旧社名KBMJ)で

 RubyOnRailsでWebアプリ、
 ブラウザゲーム開発してます。
● 社内CIサーバ管理者

 →今日はノウハウを紹介
はじめに_今日の内容

1. 社内CI環境の概要と工夫点

2. RubyOnRailsでのCI設定例紹介

3. ビルド結果通知の工夫点

4. まとめ
社内CI環境の概要と工夫点
構成図

 CIサーバ        ソース管理サーバ




      テスト結果




                開発者
構成

CIツール     Jenkins

ソース管理     Git、Subversion

ビルド、テスト   Rspec、RUnit、Maven2..etc
CI環境においての工夫3点

● ライブラリバージョン管理
● 新規プロジェクト追加の高速化
● テスト実行DB I/O高速化
工夫1_ライブラリバージョン管理
Ruby関連ライブラリは進化が激しいので、
社内に異なるバージョンの案件が多数存在

● Jenkinsサーバ上にRVM(RubyVersionManager)
  で主要バージョンのRubyを設定してある
● ライブラリはBundler or gemset(依存管理ツー
  ル)で管理



→どんな構成(Ruby20XX)でもすぐにCI対応可能
工夫2_新規プロジェクト追加の高速化

● 社内Gitリポジトリアクセス用のJenkins専用公開
  鍵を配置
● テスト環境用のDBユーザ/パスワードは共通
● Jenkins設定項目を標準化したひな形を作って
  おきコピー



→10分程度で新規プロジェクトのCI追加可能!
工夫3_テスト実行DB I/O高速化

しょぼいサーバのためテスト遅い。。。
→MySQLのデータディレクトリをオンメモリ(tmpfs)
に配置
→0円でテスト処理時間向上!

※弊社環境ではテスト実行時間20%減ぐらい
   CPU強化やSSD化などのほうが効率良さげ
RubyOnRailsでの
 CI設定例紹介
テストカバレッジ取得

RcovやSimpleCovでカバレッジを取得。
テスト追加の指針としている。
テスト結果詳細取得

詳細テスト結果が表示されるように、
CI::Reporter(JUnit互換出力ツール)で詳細表示
テーブル&カラムコメント追加

ActiveRecordコネクタを拡張して、
Migrationでコメントを追加している。

#テーブル作成時
create_table :hoges, :comment => "テーブルコメント" do |t|
 t.string :code, :comment => "fugafuga"
end

#カラム追加時
add_column :hoges, :value, :integer, :comment => "カラムコメント"
テーブル定義書自動生成

常に最新のテーブル定義書を
テーブル&カラムコメントをもとに自動生成
ビルド結果通知設定
なぜメール通知だけじゃ駄目?

● メールだと無視される可能性が高い
  →迷惑メール扱いする人も・・・

● CIを知らない人は堅苦しく感じるらしい
  →遊び心が重要
IRCでの通知

社内IRCサーバのチャンネルに通知
通知ランプ

※三○兎で1000円ぐらい
JenkinsPersonaPlugin

ドラクエ
JenkinsPersonaPlugin

コマンドー
JenkinsPersonaPlugin

ガンダムUC
まとめ
まとめ

● 予め環境を最適化しておくことで
 新規案件にすぐにCIを適用可能

● 自動的に様々な情報を取ることで
 クオリティを上げる指針に

● ビルド失敗の早期対処は最重要。
 通知の工夫して遊び心を!!
CIツール導入して一番良かったこと



テストコード書かない
メンバーが激減!
ご清聴ありがとう
ございました!




 高倉利明 / @TrinityT
 サイト:http://d.hatena.ne.jp/TrinityT/

More Related Content

What's hot

20160421 react勉強会
20160421 react勉強会20160421 react勉強会
20160421 react勉強会Naoki Kurosawa
 
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話xiidec
 
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Y Watanabe
 
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築CROOZ, inc.
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編kimulla
 
ドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techMichihito Shigemura
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介Ryo Iinuma
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTインフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTDaisuke Ikeda
 

What's hot (10)

20160421 react勉強会
20160421 react勉強会20160421 react勉強会
20160421 react勉強会
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話
 
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
 
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
 
ドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_techドキュメントを直し続ける話 #kbkz_tech
ドキュメントを直し続ける話 #kbkz_tech
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTインフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
 

Viewers also liked

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationHarald Soevik
 
An Intro To Mobile Learning & Performance Support
An Intro To Mobile Learning & Performance SupportAn Intro To Mobile Learning & Performance Support
An Intro To Mobile Learning & Performance Supportrodbmwm5
 
It Service Management
It Service ManagementIt Service Management
It Service Managementparamalways
 
쿨 커뮤니케이션 김호 2009년9월
쿨 커뮤니케이션 김호 2009년9월쿨 커뮤니케이션 김호 2009년9월
쿨 커뮤니케이션 김호 2009년9월DamianoJun
 
Regional diary of events 2009-10
Regional diary of events 2009-10Regional diary of events 2009-10
Regional diary of events 2009-10tracywaters
 
The Wisdom Of The Cross
The  Wisdom Of The  CrossThe  Wisdom Of The  Cross
The Wisdom Of The CrossJohn Gonzalez
 
The meaning of jesus3
The meaning of jesus3The meaning of jesus3
The meaning of jesus3John Gonzalez
 
The atomic bomb ends the war
The atomic bomb ends the warThe atomic bomb ends the war
The atomic bomb ends the warham97
 
The Making To Launch Of The Discovery
The Making To Launch Of The DiscoveryThe Making To Launch Of The Discovery
The Making To Launch Of The DiscoveryNatarajan Hariharan
 
Section 30 1 moving toward conflict
Section 30 1 moving toward conflictSection 30 1 moving toward conflict
Section 30 1 moving toward conflictham97
 
RBS Business Capital
RBS Business CapitalRBS Business Capital
RBS Business Capitalmpetix
 
Il Lavoro Ai Tempi Di Facebook
Il Lavoro Ai Tempi Di FacebookIl Lavoro Ai Tempi Di Facebook
Il Lavoro Ai Tempi Di FacebookReputation Manager
 
4 the day the bomb went off article
4   the day the bomb went off article4   the day the bomb went off article
4 the day the bomb went off articleham97
 
The middle ages!
The middle ages!The middle ages!
The middle ages!ham97
 
Bis Data Information
Bis Data InformationBis Data Information
Bis Data Informationparamalways
 
The cold war at home
The cold war at homeThe cold war at home
The cold war at homeham97
 
Social Reputation Analytics- Big Data Analytics Conference 2013
Social Reputation Analytics- Big Data Analytics Conference 2013Social Reputation Analytics- Big Data Analytics Conference 2013
Social Reputation Analytics- Big Data Analytics Conference 2013Reputation Manager
 

Viewers also liked (20)

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
An Intro To Mobile Learning & Performance Support
An Intro To Mobile Learning & Performance SupportAn Intro To Mobile Learning & Performance Support
An Intro To Mobile Learning & Performance Support
 
It Service Management
It Service ManagementIt Service Management
It Service Management
 
쿨 커뮤니케이션 김호 2009년9월
쿨 커뮤니케이션 김호 2009년9월쿨 커뮤니케이션 김호 2009년9월
쿨 커뮤니케이션 김호 2009년9월
 
Statistics All
Statistics AllStatistics All
Statistics All
 
Regional diary of events 2009-10
Regional diary of events 2009-10Regional diary of events 2009-10
Regional diary of events 2009-10
 
The Wisdom Of The Cross
The  Wisdom Of The  CrossThe  Wisdom Of The  Cross
The Wisdom Of The Cross
 
The meaning of jesus3
The meaning of jesus3The meaning of jesus3
The meaning of jesus3
 
The atomic bomb ends the war
The atomic bomb ends the warThe atomic bomb ends the war
The atomic bomb ends the war
 
The Making To Launch Of The Discovery
The Making To Launch Of The DiscoveryThe Making To Launch Of The Discovery
The Making To Launch Of The Discovery
 
Section 30 1 moving toward conflict
Section 30 1 moving toward conflictSection 30 1 moving toward conflict
Section 30 1 moving toward conflict
 
RBS Business Capital
RBS Business CapitalRBS Business Capital
RBS Business Capital
 
Il Lavoro Ai Tempi Di Facebook
Il Lavoro Ai Tempi Di FacebookIl Lavoro Ai Tempi Di Facebook
Il Lavoro Ai Tempi Di Facebook
 
4 the day the bomb went off article
4   the day the bomb went off article4   the day the bomb went off article
4 the day the bomb went off article
 
Manoj(Resume)
Manoj(Resume)Manoj(Resume)
Manoj(Resume)
 
Pel 2 kerasulan
Pel 2 kerasulanPel 2 kerasulan
Pel 2 kerasulan
 
The middle ages!
The middle ages!The middle ages!
The middle ages!
 
Bis Data Information
Bis Data InformationBis Data Information
Bis Data Information
 
The cold war at home
The cold war at homeThe cold war at home
The cold war at home
 
Social Reputation Analytics- Big Data Analytics Conference 2013
Social Reputation Analytics- Big Data Analytics Conference 2013Social Reputation Analytics- Big Data Analytics Conference 2013
Social Reputation Analytics- Big Data Analytics Conference 2013
 

Similar to ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜

JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私Shoji Shirotori
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2近藤 繁延
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜Daiki Kawanuma
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -Yukihiko SAWANOBORI
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたYou&I
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリングInnova Inc.
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~Yuki Ando
 
20191120 beyondstudy#21 kitaoka
20191120 beyondstudy#21 kitaoka20191120 beyondstudy#21 kitaoka
20191120 beyondstudy#21 kitaokabeyond Co., Ltd.
 
入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた祐介 植木
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座DIVE INTO CODE Corp.
 
130329 04
130329 04130329 04
130329 04openrtm
 
20130329 rtm4
20130329 rtm420130329 rtm4
20130329 rtm4openrtm
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていくRyo Mitoma
 
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Takashi Honda
 
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善Developers Summit
 
2019-Nov-23 Pivotalのプロセスとプラットフォーム@DellTechnologies FORUM
2019-Nov-23 Pivotalのプロセスとプラットフォーム@DellTechnologies FORUM2019-Nov-23 Pivotalのプロセスとプラットフォーム@DellTechnologies FORUM
2019-Nov-23 Pivotalのプロセスとプラットフォーム@DellTechnologies FORUMShinya Yanagihara
 
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Shota Umeda
 

Similar to ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜 (20)

JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
20191120 beyondstudy#21 kitaoka
20191120 beyondstudy#21 kitaoka20191120 beyondstudy#21 kitaoka
20191120 beyondstudy#21 kitaoka
 
入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
恋するJenkins
恋するJenkins恋するJenkins
恋するJenkins
 
130329 04
130329 04130329 04
130329 04
 
20130329 rtm4
20130329 rtm420130329 rtm4
20130329 rtm4
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善
 
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
 
2019-Nov-23 Pivotalのプロセスとプラットフォーム@DellTechnologies FORUM
2019-Nov-23 Pivotalのプロセスとプラットフォーム@DellTechnologies FORUM2019-Nov-23 Pivotalのプロセスとプラットフォーム@DellTechnologies FORUM
2019-Nov-23 Pivotalのプロセスとプラットフォーム@DellTechnologies FORUM
 
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
 

ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜