続・CI超入門〜Jenkinsのススメ2 CI導入の壁を越えろ〜 に行ってきました。

はじめに

2月22日に行われた「続・CI超入門 〜 Jenkinsのススメ2 CI導入の壁を越えろ 〜」に行ってきました。

Jenkinsの導入 (CloudBees, Inc. 川口 耕介さん)

CIやJenkinsを導入するにあたってのお話でした。
デモで出てきたTest Driveを使えば、手軽にJenkinsを試せそうです。

継続的インテグレーション(CI)の発想
  • ビルドを頻繁に実行しよう
  • テストを頻繁に実行しよう
  • 問題が発生したらときすぐに発見できるようにしよう
CIとは
  • 命綱
  • 火災報知機
    • 問題があったらすぐにわかる
    • 普段ちゃんと動いていることが前提(「警報鳴ってるけど、いつものことだからいいよ」って感じになってしまう)。問題が見つかったらすぐに直すことが必要。
CIするのにあるとよいもの
  • バージョン管理システム
    • 誰の変更で壊れたのかわかるようにするため
  • 自動化されたビルドスクリプト
    • ビルドがない言語の場合は品質検査で代用
  • 自動化されたテストスクリプト
デモ
  • ジョブを作る
    • 新規ジョブ作成 > ジョブ名を入れて選ぶ(フリースタイルがおすすめ)
    • ジョブとは?
      • 基本的にはソフトウェアのビルドを模している
      • ビルドするのにどんな条件・ツールなのかがわかるのも利点の1つ。ログを見るのを手助けする役割もある。
      • テストを実行して失敗すると、どのコミットのせいなのか、とかそのときのエラーメッセージ、スタックトレースも表示される

Jenkins + EC2で分散ビルド (Sky株式会社 玉川 竜司さん)

ビルドは負荷の変動が激しい作業のため、Amazon EC2上で動かしてしまおうというお話でした。

Amazon EC2でJenkinsを動かす話
  • ビルドは負荷の変動が激しい(リリース前は高負荷、とか)
  • Amazon EC2ならピークにあわせてハードウェアを用意しなくていい!!
    • EC2で勝手にスレーブを動的に増減してくれる
    • 1時間ごとの従量課金
  • セキュリティは大丈夫?→Amazon Virtual Private Cloud(VPC)やDirect Connectで対応
EC2 Pluginで高負荷時にスレーブを自動的に起動
  • EC2 Pluginを使えば、EC2のインスタンスを自動的に起動・終了してくれる
  • 注意点
    • 設定はちょっと引っかかるかも
    • UbuntuのAMIをベースにするとうまくいった
    • 64bitインスタンスは今のところ使えない

LT(1): Startup Jenkins! 〜CIから始めないJenkins入門〜 (@kanu_さん)

JenkinsはCIだけでなく、高機能なcronとしても使えるというお話でした。その発想はなかった!
紹介されていたTracLightningを使えば導入も非常に簡単にできそうです。

CIできてないとJenkinsに入門できない?→否!
  • 高機能cronとして使える
  • Windowsのタスクがイケてない→そうだ、Jenkinsを使おう!
    • スケジュールとかログとかの管理も楽だし実行結果とかもWeb UIから見れる。処理が終わったらメール送信も可能。
TrachLightningを使えば5分で導入完了
  • JenkinsやらTracやら必要なものがひと通り揃っている
  • Jenkinsのビルドサンプルもたくさん付属

LT(2): <すいませんタイトル忘れました> (@cactusmanさん)

Jenkinsをどうやって社内に導入するか、というお話でした。
様々な工夫がありましたが、最終手段は「会社を変える」だそうですw

構想編
  • コストをかけない
    • ダメならすぐ撤退
  • 何がしたいかを決めておく
    • テストがしたいのか、常にリリースできる状態を保ちたいのか
サーバ編
  • 空いているサーバを確保
  • どっかに寄生
  • 上司を説得するには実際に動くものを見せるのが効果的
    • グラフとか。マネージャの人はそういうの大好きなので。
ビルド編
  • ビルドスクリプトは書きましょう
  • 静的解析ツールを動かすのに使うのもアリ
通知編
  • まずは自分だけ
    • いきなり失敗してるのがみんなに通知されると、何事か!?となるので
  • 安定してきたらみんなが見る場所へ

まとめ

Jenkinsを簡単に試せるTest DriveやTracLightningのことを知ることができたり、Jenkinsを定期実行ジョブや静的解析ツールを動かすために使うというアイディアなど、いろいろ学ぶことができました。
そんなわけで、早速Jenkinsをインストールしていろいろ試してみようと思います。

*1:手元のUbuntu11.10ではファイルを右クリックして「別のアプリで開く」→「IcedTea Java 6 Web Start」で実行できました