Post on 07-Dec-2014
description
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回したい!
なんかつくりたいね!
おしまい
なんかすぐに発表らしいですが
おしまい
なんかすぐに発表らしいですが