CIのその先へ

Post on 07-Dec-2014

6.780 views 0 download

description

 

Transcript of CIのその先へ

CIのその先へ

bleis-tift

June 18, 2011

自己紹介

id:bleis-tift / @bleis

開発環境はVimでGitで Jenkins

プレゼン資料は LATEXで作ってPDF化

OSはWindowsなのでたまに変態扱いされるでもぜんぜんそんなことはない

自己紹介

id:bleis-tift / @bleis

開発環境はVimでGitで Jenkins

プレゼン資料は LATEXで作ってPDF化

OSはWindowsなのでたまに変態扱いされるでもぜんぜんそんなことはない

パターンによるソフトウェア構成管理

ソフトウェア構成管理にはパターンがある!

パターンによるソフトウェア構成管理

ソフトウェア構成管理にはパターンがある!

パターンによるソフトウェア構成管理

ソフトウェア構成管理にはパターンがある!

ソフトウェア構成管理

ソフトウェア構成管理って?

バージョン管理

BTS/ITS

ビルド管理

直接の開発環境ではない感じでも重要だよ!

ソフトウェア構成管理

ソフトウェア構成管理って?

バージョン管理

BTS/ITS

ビルド管理

直接の開発環境ではない感じでも重要だよ!

ソフトウェア構成管理

ソフトウェア構成管理って?

バージョン管理

BTS/ITS

ビルド管理

直接の開発環境ではない感じでも重要だよ!

ソフトウェア構成管理

ソフトウェア構成管理って?

バージョン管理

BTS/ITS

ビルド管理

直接の開発環境ではない感じでも重要だよ!

ソフトウェア構成管理

ソフトウェア構成管理って?

バージョン管理

BTS/ITS

ビルド管理

直接の開発環境ではない感じでも重要だよ!

ソフトウェア構成管理

ソフトウェア構成管理って?

バージョン管理

BTS/ITS

ビルド管理

直接の開発環境ではない感じ

でも重要だよ!

ソフトウェア構成管理

ソフトウェア構成管理って?

バージョン管理

BTS/ITS

ビルド管理

直接の開発環境ではない感じでも重要だよ!

今回するお話

いつもする具体的な話ではなく、こういうこと考えないといけないよね、とか、

こうなっているといいよね、という話をします。

今回するお話

いつもする具体的な話ではなく、こういうこと考えないといけないよね、とか、こうなっているといいよね、という話をします。

ビルド管理(CI以前)

管理なんてしてないよ!

秘伝のビルドスクリプトをですね・・・

専任のビルド職人がいまして・・・

cronでナイトリービルドしてますよ

ビルド管理(CI以前)

管理なんてしてないよ!

秘伝のビルドスクリプトをですね・・・

専任のビルド職人がいまして・・・

cronでナイトリービルドしてますよ

ビルド管理(CI以前)

管理なんてしてないよ!

秘伝のビルドスクリプトをですね・・・

専任のビルド職人がいまして・・・

cronでナイトリービルドしてますよ

ビルド管理(CI以前)

管理なんてしてないよ!

秘伝のビルドスクリプトをですね・・・

専任のビルド職人がいまして・・・

cronでナイトリービルドしてますよ

ビルド管理(CI以前)

管理なんてしてないよ!

秘伝のビルドスクリプトをですね・・・

専任のビルド職人がいまして・・・

cronでナイトリービルドしてますよ

CI

Continuous Integration:継続的統合

一日に一回と言わず、何度もビルドする

ビルドだけでなく、テストとかもやる

ゼロから製品として出荷可能な状態までの構築を何度もやる

ちなみに・・・CIはプラクティスで、CIツールはそれを支援するためのツールCIツールが無くてもCIは(一応)できるよ!

CI

Continuous Integration:継続的統合

一日に一回と言わず、何度もビルドする

ビルドだけでなく、テストとかもやる

ゼロから製品として出荷可能な状態までの構築を何度もやる

ちなみに・・・CIはプラクティスで、CIツールはそれを支援するためのツールCIツールが無くてもCIは(一応)できるよ!

CI

Continuous Integration:継続的統合

一日に一回と言わず、何度もビルドする

ビルドだけでなく、テストとかもやる

ゼロから製品として出荷可能な状態までの構築を何度もやる

ちなみに・・・CIはプラクティスで、CIツールはそれを支援するためのツールCIツールが無くてもCIは(一応)できるよ!

CI

Continuous Integration:継続的統合

一日に一回と言わず、何度もビルドする

ビルドだけでなく、テストとかもやる

ゼロから製品として出荷可能な状態までの構築を何度もやる

ちなみに・・・CIはプラクティスで、CIツールはそれを支援するためのツールCIツールが無くてもCIは(一応)できるよ!

CI

Continuous Integration:継続的統合

一日に一回と言わず、何度もビルドする

ビルドだけでなく、テストとかもやる

ゼロから製品として出荷可能な状態までの構築を何度もやる

ちなみに・・・CIはプラクティスで、CIツールはそれを支援するためのツールCIツールが無くてもCIは(一応)できるよ!

CI

Continuous Integration:継続的統合

一日に一回と言わず、何度もビルドする

ビルドだけでなく、テストとかもやる

ゼロから製品として出荷可能な状態までの構築を何度もやる

ちなみに・・・

CIはプラクティスで、CIツールはそれを支援するためのツールCIツールが無くてもCIは(一応)できるよ!

CI

Continuous Integration:継続的統合

一日に一回と言わず、何度もビルドする

ビルドだけでなく、テストとかもやる

ゼロから製品として出荷可能な状態までの構築を何度もやる

ちなみに・・・CIはプラクティスで、CIツールはそれを支援するためのツール

CIツールが無くてもCIは(一応)できるよ!

CI

Continuous Integration:継続的統合

一日に一回と言わず、何度もビルドする

ビルドだけでなく、テストとかもやる

ゼロから製品として出荷可能な状態までの構築を何度もやる

ちなみに・・・CIはプラクティスで、CIツールはそれを支援するためのツールCIツールが無くてもCIは(一応)できるよ!

おススメCIツール

Jenkinsがいいよ!いいところは一杯あるけど、一番大きいと思っているのが

導入のお手軽さ

他のCIツール試してもここで Jenkinsに勝てないとその先に進む気になれない・・・

おススメCIツール

Jenkinsがいいよ!

いいところは一杯あるけど、一番大きいと思っているのが

導入のお手軽さ

他のCIツール試してもここで Jenkinsに勝てないとその先に進む気になれない・・・

おススメCIツール

Jenkinsがいいよ!いいところは一杯あるけど、一番大きいと思っているのが

導入のお手軽さ

他のCIツール試してもここで Jenkinsに勝てないとその先に進む気になれない・・・

おススメCIツール

Jenkinsがいいよ!いいところは一杯あるけど、一番大きいと思っているのが

導入のお手軽さ

他のCIツール試してもここで Jenkinsに勝てないとその先に進む気になれない・・・

おススメCIツール

Jenkinsがいいよ!いいところは一杯あるけど、一番大きいと思っているのが

導入のお手軽さ

他のCIツール試してもここで Jenkinsに勝てないとその先に進む気になれない・・・

CIで実現できること、できないこと

できること

ビルドが壊れたことの検知常にリリース可能な体制の構築各種メトリクスを採取して、その移り変わりを見る

できないこと

ビルドを壊さない壊さないことを確認したうえでのリポジトリへの更新

CIで実現できること、できないこと

できること

ビルドが壊れたことの検知常にリリース可能な体制の構築各種メトリクスを採取して、その移り変わりを見る

できないこと

ビルドを壊さない壊さないことを確認したうえでのリポジトリへの更新

CIで実現できること、できないこと

できることビルドが壊れたことの検知

常にリリース可能な体制の構築各種メトリクスを採取して、その移り変わりを見る

できないこと

ビルドを壊さない壊さないことを確認したうえでのリポジトリへの更新

CIで実現できること、できないこと

できることビルドが壊れたことの検知常にリリース可能な体制の構築

各種メトリクスを採取して、その移り変わりを見る

できないこと

ビルドを壊さない壊さないことを確認したうえでのリポジトリへの更新

CIで実現できること、できないこと

できることビルドが壊れたことの検知常にリリース可能な体制の構築各種メトリクスを採取して、その移り変わりを見る

できないこと

ビルドを壊さない壊さないことを確認したうえでのリポジトリへの更新

CIで実現できること、できないこと

できることビルドが壊れたことの検知常にリリース可能な体制の構築各種メトリクスを採取して、その移り変わりを見る

できないこと

ビルドを壊さない壊さないことを確認したうえでのリポジトリへの更新

CIで実現できること、できないこと

できることビルドが壊れたことの検知常にリリース可能な体制の構築各種メトリクスを採取して、その移り変わりを見る

できないことビルドを壊さない

壊さないことを確認したうえでのリポジトリへの更新

CIで実現できること、できないこと

できることビルドが壊れたことの検知常にリリース可能な体制の構築各種メトリクスを採取して、その移り変わりを見る

できないことビルドを壊さない壊さないことを確認したうえでのリポジトリへの更新

Private System Buildパターン

コミットする前にローカルでビルドしようね!ということ

そんなの忘れちゃう・・・人間だもの

忘れないように機械にやってもらおう!

ローカルでCIまわせばいいじゃない!

Private System Buildパターン

コミットする前にローカルでビルドしようね!ということ

そんなの忘れちゃう・・・人間だもの

忘れないように機械にやってもらおう!

ローカルでCIまわせばいいじゃない!

Private System Buildパターン

コミットする前にローカルでビルドしようね!ということ

そんなの忘れちゃう・・・人間だもの

忘れないように機械にやってもらおう!

ローカルでCIまわせばいいじゃない!

Private System Buildパターン

コミットする前にローカルでビルドしようね!ということ

そんなの忘れちゃう・・・人間だもの

忘れないように機械にやってもらおう!

ローカルでCIまわせばいいじゃない!

Private System Buildパターン

コミットする前にローカルでビルドしようね!ということ

そんなの忘れちゃう・・・人間だもの

忘れないように機械にやってもらおう!

ローカルでCIまわせばいいじゃない!

Private System Buildパターン

コミットする前にローカルでビルドしようね!ということ

そんなの忘れちゃう・・・人間だもの

忘れないように機械にやってもらおう!

ローカルでCIまわせばいいじゃない!

現実の壁

CI重いからローカルでやるのはつらい・・・

そもそもチェックさえできればローカルじゃなくてもいいんじゃね?

現実の壁

CI重いからローカルでやるのはつらい・・・

そもそもチェックさえできればローカルじゃなくてもいいんじゃね?

現実の壁

CI重いからローカルでやるのはつらい・・・

そもそもチェックさえできればローカルじゃなくてもいいんじゃね?

新しい別のパターンの考案

Private System Buildパターンも含む、より抽象的なパターンを考えてみた実現できればいいことに着目すると・・・

CIはローカルで動いてもサーバで動いてもいい

リポジトリに反映されるのは、ビルドが通ったものだけでないといけない

結果は変更を行った人だけが確認できればよく、大々的な通知はむしろ邪魔

これが実現できればその構成はどうだっていい。→クリーンリポジトリパターンと勝手に呼ぶ

新しい別のパターンの考案

Private System Buildパターンも含む、より抽象的なパターンを考えてみた

実現できればいいことに着目すると・・・

CIはローカルで動いてもサーバで動いてもいい

リポジトリに反映されるのは、ビルドが通ったものだけでないといけない

結果は変更を行った人だけが確認できればよく、大々的な通知はむしろ邪魔

これが実現できればその構成はどうだっていい。→クリーンリポジトリパターンと勝手に呼ぶ

新しい別のパターンの考案

Private System Buildパターンも含む、より抽象的なパターンを考えてみた実現できればいいことに着目すると・・・

CIはローカルで動いてもサーバで動いてもいい

リポジトリに反映されるのは、ビルドが通ったものだけでないといけない

結果は変更を行った人だけが確認できればよく、大々的な通知はむしろ邪魔

これが実現できればその構成はどうだっていい。→クリーンリポジトリパターンと勝手に呼ぶ

新しい別のパターンの考案

Private System Buildパターンも含む、より抽象的なパターンを考えてみた実現できればいいことに着目すると・・・

CIはローカルで動いてもサーバで動いてもいい

リポジトリに反映されるのは、ビルドが通ったものだけでないといけない

結果は変更を行った人だけが確認できればよく、大々的な通知はむしろ邪魔

これが実現できればその構成はどうだっていい。→クリーンリポジトリパターンと勝手に呼ぶ

新しい別のパターンの考案

Private System Buildパターンも含む、より抽象的なパターンを考えてみた実現できればいいことに着目すると・・・

CIはローカルで動いてもサーバで動いてもいい

リポジトリに反映されるのは、ビルドが通ったものだけでないといけない

結果は変更を行った人だけが確認できればよく、大々的な通知はむしろ邪魔

これが実現できればその構成はどうだっていい。→クリーンリポジトリパターンと勝手に呼ぶ

新しい別のパターンの考案

Private System Buildパターンも含む、より抽象的なパターンを考えてみた実現できればいいことに着目すると・・・

CIはローカルで動いてもサーバで動いてもいい

リポジトリに反映されるのは、ビルドが通ったものだけでないといけない

結果は変更を行った人だけが確認できればよく、大々的な通知はむしろ邪魔

これが実現できればその構成はどうだっていい。→クリーンリポジトリパターンと勝手に呼ぶ

新しい別のパターンの考案

Private System Buildパターンも含む、より抽象的なパターンを考えてみた実現できればいいことに着目すると・・・

CIはローカルで動いてもサーバで動いてもいい

リポジトリに反映されるのは、ビルドが通ったものだけでないといけない

結果は変更を行った人だけが確認できればよく、大々的な通知はむしろ邪魔

これが実現できればその構成はどうだっていい。

→クリーンリポジトリパターンと勝手に呼ぶ

新しい別のパターンの考案

Private System Buildパターンも含む、より抽象的なパターンを考えてみた実現できればいいことに着目すると・・・

CIはローカルで動いてもサーバで動いてもいい

リポジトリに反映されるのは、ビルドが通ったものだけでないといけない

結果は変更を行った人だけが確認できればよく、大々的な通知はむしろ邪魔

これが実現できればその構成はどうだっていい。→クリーンリポジトリパターンと勝手に呼ぶ

クリーンリポジトリパターン構成例

この構成では・・・

CIはサーバで動く

取得用と更新用のリポジトリを分けることで、ビルドが通ったもののみを反映させている結果の通知の仕組みは特に規定していない

CIツールに Jenkinsを使うならブラウザに張り付くでも可さすがにそれは・・・と思うなら、通知の仕組みを作ればおkRubyで書いてみたものはある

これはCIですか・・・?

この構成では・・・

CIはサーバで動く

取得用と更新用のリポジトリを分けることで、ビルドが通ったもののみを反映させている結果の通知の仕組みは特に規定していない

CIツールに Jenkinsを使うならブラウザに張り付くでも可さすがにそれは・・・と思うなら、通知の仕組みを作ればおkRubyで書いてみたものはある

これはCIですか・・・?

この構成では・・・

CIはサーバで動く

取得用と更新用のリポジトリを分けることで、ビルドが通ったもののみを反映させている

結果の通知の仕組みは特に規定していない

CIツールに Jenkinsを使うならブラウザに張り付くでも可さすがにそれは・・・と思うなら、通知の仕組みを作ればおkRubyで書いてみたものはある

これはCIですか・・・?

この構成では・・・

CIはサーバで動く

取得用と更新用のリポジトリを分けることで、ビルドが通ったもののみを反映させている結果の通知の仕組みは特に規定していない

CIツールに Jenkinsを使うならブラウザに張り付くでも可さすがにそれは・・・と思うなら、通知の仕組みを作ればおkRubyで書いてみたものはある

これはCIですか・・・?

この構成では・・・

CIはサーバで動く

取得用と更新用のリポジトリを分けることで、ビルドが通ったもののみを反映させている結果の通知の仕組みは特に規定していない

CIツールに Jenkinsを使うならブラウザに張り付くでも可

さすがにそれは・・・と思うなら、通知の仕組みを作ればおkRubyで書いてみたものはある

これはCIですか・・・?

この構成では・・・

CIはサーバで動く

取得用と更新用のリポジトリを分けることで、ビルドが通ったもののみを反映させている結果の通知の仕組みは特に規定していない

CIツールに Jenkinsを使うならブラウザに張り付くでも可さすがにそれは・・・と思うなら、通知の仕組みを作ればおk

Rubyで書いてみたものはある

これはCIですか・・・?

この構成では・・・

CIはサーバで動く

取得用と更新用のリポジトリを分けることで、ビルドが通ったもののみを反映させている結果の通知の仕組みは特に規定していない

CIツールに Jenkinsを使うならブラウザに張り付くでも可さすがにそれは・・・と思うなら、通知の仕組みを作ればおkRubyで書いてみたものはある

これはCIですか・・・?

この構成では・・・

CIはサーバで動く

取得用と更新用のリポジトリを分けることで、ビルドが通ったもののみを反映させている結果の通知の仕組みは特に規定していない

CIツールに Jenkinsを使うならブラウザに張り付くでも可さすがにそれは・・・と思うなら、通知の仕組みを作ればおkRubyで書いてみたものはある

これはCIですか・・・?

んー

CIを組み込んではいるけど、違う気がするCIがVCSをほぼ前提としているように、CIを前提としたこの構成にも何か名前付けたい・・・ソフトウェア構成管理パターンとしては「クリーンリポジトリパターン」と呼んでいるけど、プラクティスとしての名前が欲しい

名前募集中!

んー

CIを組み込んではいるけど、違う気がする

CIがVCSをほぼ前提としているように、CIを前提としたこの構成にも何か名前付けたい・・・ソフトウェア構成管理パターンとしては「クリーンリポジトリパターン」と呼んでいるけど、プラクティスとしての名前が欲しい

名前募集中!

んー

CIを組み込んではいるけど、違う気がするCIがVCSをほぼ前提としているように、CIを前提としたこの構成にも何か名前付けたい・・・

ソフトウェア構成管理パターンとしては「クリーンリポジトリパターン」と呼んでいるけど、プラクティスとしての名前が欲しい

名前募集中!

んー

CIを組み込んではいるけど、違う気がするCIがVCSをほぼ前提としているように、CIを前提としたこの構成にも何か名前付けたい・・・ソフトウェア構成管理パターンとしては「クリーンリポジトリパターン」と呼んでいるけど、プラクティスとしての名前が欲しい

名前募集中!

んー

CIを組み込んではいるけど、違う気がするCIがVCSをほぼ前提としているように、CIを前提としたこの構成にも何か名前付けたい・・・ソフトウェア構成管理パターンとしては「クリーンリポジトリパターン」と呼んでいるけど、プラクティスとしての名前が欲しい

名前募集中!

さらにその先へ

ローカルで動くのがいいかサーバで動くのがいいかって言ったら、そりゃローカルの方がいい

サーバで動かしているのはあくまで妥協

ローカルで動くような軽いCIツールがあればいいんじゃね?

その土台として sbtって割と良さそうじゃね?

——妄想ここまで——

さらにその先へ

ローカルで動くのがいいかサーバで動くのがいいかって言ったら、そりゃローカルの方がいい

サーバで動かしているのはあくまで妥協

ローカルで動くような軽いCIツールがあればいいんじゃね?

その土台として sbtって割と良さそうじゃね?

——妄想ここまで——

さらにその先へ

ローカルで動くのがいいかサーバで動くのがいいかって言ったら、そりゃローカルの方がいい

サーバで動かしているのはあくまで妥協

ローカルで動くような軽いCIツールがあればいいんじゃね?

その土台として sbtって割と良さそうじゃね?

——妄想ここまで——

さらにその先へ

ローカルで動くのがいいかサーバで動くのがいいかって言ったら、そりゃローカルの方がいい

サーバで動かしているのはあくまで妥協

ローカルで動くような軽いCIツールがあればいいんじゃね?

その土台として sbtって割と良さそうじゃね?

——妄想ここまで——

さらにその先へ

ローカルで動くのがいいかサーバで動くのがいいかって言ったら、そりゃローカルの方がいい

サーバで動かしているのはあくまで妥協

ローカルで動くような軽いCIツールがあればいいんじゃね?

その土台として sbtって割と良さそうじゃね?

——妄想ここまで——

さらにその先へ

ローカルで動くのがいいかサーバで動くのがいいかって言ったら、そりゃローカルの方がいい

サーバで動かしているのはあくまで妥協

ローカルで動くような軽いCIツールがあればいいんじゃね?

その土台として sbtって割と良さそうじゃね?

——妄想ここまで——

まとめ

CI実践しよう!

Jenkins便利!

クリーンリポジトリ!

ローカルでCI回したい!

なんかつくりたいね!

まとめ

CI実践しよう!

Jenkins便利!

クリーンリポジトリ!

ローカルでCI回したい!

なんかつくりたいね!

まとめ

CI実践しよう!

Jenkins便利!

クリーンリポジトリ!

ローカルでCI回したい!

なんかつくりたいね!

まとめ

CI実践しよう!

Jenkins便利!

クリーンリポジトリ!

ローカルでCI回したい!

なんかつくりたいね!

まとめ

CI実践しよう!

Jenkins便利!

クリーンリポジトリ!

ローカルでCI回したい!

なんかつくりたいね!

まとめ

CI実践しよう!

Jenkins便利!

クリーンリポジトリ!

ローカルでCI回したい!

なんかつくりたいね!

おしまい

なんかすぐに発表らしいですが

おしまい

なんかすぐに発表らしいですが