Post on 26-Jun-2015
CI戦略しましょうか
bleis-tift
October 15 2011
自己紹介
id:bleis-tift / @bleis
名古屋から来ました
.NET系プログラマです
お仕事で Jenkins使ってCIまわしてます
お詫び
Bingとか出てきません。
今日やること
第一回大阪 Jenkins勉強会で、おださんが大抵のことを発表してくれました。
http://slidesha.re/nY5x7s
まとめると、「MSBuild便利」と理解しました。
この発表では、
構成の紹介
実際に運用してみてどうだったか
を中心に話します。
お仕事について
社員の数 十数名。協力会社の人を入れると 20人くらい?
チームの大きさ 2人~6人
システムの種類 Webサービスなど
環境 .NET Framework(1.1~4.0 / C#、F#) /Git / MSBuild / NUnit
こんな環境で Jenkins使っています
構成 (全体)
構成 (全体)
構成 (全体)
構成 (全体)
構成 (全体)
構成 (全体)
構成 (プロジェクトごと)
構成 (プロジェクトごと)
この話は以前何度かしているので、詳しくはそちらをどうぞ。
http://slideshare.net/bleistift/
もしくは懇親会で。
使っている主なプラグイン
Simple Theme Plugin
Git Plugin
MSBuild Plugin
NUnit Plugin
Groovy Postbuild Plugin
Active Directory Plugin
Role Strategy Plugin
使っている主なプラグイン
Simple Theme Plugin
Git Plugin
MSBuild Plugin
NUnit Plugin
Groovy Postbuild Plugin
Active Directory Plugin
Role Strategy Plugin
使っている主なプラグイン
使っている主なプラグイン
Simple Theme Plugin
Git Plugin
MSBuild Plugin
NUnit Plugin
Groovy Postbuild Plugin
Active Directory Plugin
Role Strategy Plugin
使っている主なプラグイン
Simple Theme Plugin
Git Plugin
MSBuild Plugin
NUnit Plugin
Groovy Postbuild Plugin
Active Directory Plugin
Role Strategy Plugin
使っている主なプラグイン
Simple Theme Plugin
Git Plugin
MSBuild Plugin
NUnit Plugin
Groovy Postbuild Plugin
Active Directory Plugin
Role Strategy Plugin
使っている主なプラグイン
Simple Theme Plugin
Git Plugin
MSBuild Plugin
NUnit Plugin
Groovy Postbuild Plugin
Active Directory Plugin
Role Strategy Plugin
Jenkins(CIツール)導入の効果
問題の早期発見
リリースプロセスの標準化
開発者に安心を与える
(個人的に)思いもよらない効果
安心感を与える理由
開発者は不安を持っている
手元ではビルドできるけど、他では・・・?
急にリリースが必要になったけど、この dllでいいんだっけ・・・?
さっきの変更で他の何か壊してないかな・・・?
などなど
Jenkins(CIツール)の導入によって、これらの不安をある程度解消できた
失敗談
ビルド後に行う処理を Jenkinsの外に出したこと
全てのビルドを 1つのマシンに集約したこと
何もないところからビルドせずに問題発見が遅れたこと
Jenkinsで完結させる
そうしないと・・・
ビルドの設定が面倒になる
ビルドの設定の確認も面倒になる
他のマシンへの流用が面倒になる
どうする?
Groovy Plugin / PowerShell Pluginなどを使う
Groovy Postbuild Pluginを使う
最終的にはPlugin化することも考える
無理して一つにまとめない
そうしないと・・・
ビルドマシンの中がぐちゃぐちゃに
失敗するべきビルドが成功してしまうことも
どうする?
必要な環境ごとにビルドマシンを分ける
各々をスレーブにしてまとめる
←できてない
無理して一つにまとめない
そうしないと・・・
ビルドマシンの中がぐちゃぐちゃに
失敗するべきビルドが成功してしまうことも
どうする?
必要な環境ごとにビルドマシンを分ける
各々をスレーブにしてまとめる←できてない
必ず何もないところからビルドする
そうしないと・・・
失敗するべきビルドが成功してしまう
どうする?
何もないところからビルドするようにしましょう
こんな当たり前のことで失敗してしまった・・・
まとめ
.NETでも Jenkins便利!
開発者に安心感を!
基本に忠実に!