Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ポストJenkins時代の
自動化戦略
Posaune @ Guildworks
2015/07/11(土) CI勉強会 #vshtc 1
自己紹介
• 前川博志 aka @Posaune
• ギルドワークス株式会社で働いています
• 勝手にALMエンジニアを名乗ってます
• Microsoft MVP for Visual Studio ALM
2015/07/11(土) CI勉...
ギルドワークス
• 現在7名の小さな会社
• 設立一年ちょっとのベンチャー企業
• ソフトウェアの超上流での見立てから開発、果ては現場改善
までやってます
• モットーは「正しいものを正しくつくる!」
2015/07/11(土) CI勉強会 #...
諸々お知らせ!
from ギルドワークス
2015/07/11(土) CI勉強会 #vshtc 4
Blog やってます!
http://blog.guildworks.jp/
2015/07/11(土) CI勉強会 #vshtc 5
カンファレンス、
やります!
2015/07/11(土) CI勉強会 #vshtc 6
2015/07/11(土) CI勉強会 #vshtc 7
お悩み・相談募集中
• 現場が同しようもないから何とかしたい・・・
• アイデアを形にできない・・・
• お気軽にご相談を! http://guildworks.jp/about/work/
2015/07/11(土) CI勉強会 #vshtc...
お知らせ終わり。
2015/07/11(土) CI勉強会 #vshtc 9
本日のAgenda
• Jenkins一択時代の終焉
• ポストJenkins時代のCI
• ギルドワークスのCI事情
2015/07/11(土) CI勉強会 #vshtc 10
Jenkins一択時代の終焉
2015/07/11(土) CI勉強会 #vshtc 11
Jenkinsのもたらしたもの
• 職人さん!ビルドお願いしやす!
Jenkinsさんがビルドしといてくれたの使おう
• 自動ビルドとかわからないこわい
Jenkinsさんならなんとかなる!
• この作業めんどいー。
それJenkinsでできま...
Jenkins後の世界
• 自動ビルドの「キャズム」超え
• CIを当たり前に
2015/07/11(土) CI勉強会 #vshtc 13
Jenkins後の世界
• 自動ビルドの「キャズム」超え
• CIを当たり前に
• Jenkins職人
2015/07/11(土) CI勉強会 #vshtc 14
Jenkinsの"職人化"
• あなたのところのJenkins、みんなメンテできますか?
• どんなプラグインが入っているか、管理できてますか?
• 新しいJobを追加するとき、誰がやっても同じようなJobを作
ってくれますか?
• Jenki...
Jenkinsがボトルネックに
• 高度に専門化されたシェル + 手作業
高度に専門化されたJenkinsジョブ
• 結局トラブル時にはJenkins職人が呼ばれる
• Jenkinsサーバでエラーが起こると色々終わる
• 10年継ぎ足し続けた...
Jenkins以外の選択肢
• ビルドツール・ビルドサポートツールの進化により、
Jenkinsのジョブ相当の物は簡単にスクリプトで書けるよう
になった
• ローカルのVMが流行るかと思ったらもうそこは クラウドと
コンテナの世界 だった。
2...
Jenkins以外の選択肢
• なら、クラウド上に単純な定形作業だけをしてくれる、ビル
ドサーバ群があればいいんじゃね?
• そう、 CI as a Service や!!
2015/07/11(土) CI勉強会 #vshtc 18
ポストJenkins時代のCI
2015/07/11(土) CI勉強会 #vshtc 19
CI as a Service
• 文字通り、サービスとしてCI(ビルド)を提供している
• Travis CI
• Circle CI
• drone.io
• Wercker
• Visual Studio Online
2015/07/1...
CI as a Service
• だいたい以下のことを行う
• あたらしいVMを起動
• VMの環境セットアップ(yum install)
• ビルド・テスト環境のセットアップ(bundle install)
• ビルド・テスト(rake b...
設定はこんな感じに
machine:
environment:
XCODE_SCHEME: SwiftLesson
test:
override:|
- mkdir -p $CIRCLE_TEST_REPORTS/xctest
- Xctool...
CI as a Service のメリット
• サーバを用意せずに始められる
• 使い捨てのクリーンな環境が保証される
• CIサービス上の設定項目はそんなに無いので職人かを防げる
• 無料枠がリッチなサービスが多い
• 最初の導入ステップが簡...
デモ: CircleCIでビルド
してみよう!
2015/07/11(土) CI勉強会 #vshtc 24
CI as a Service のデメリット
• 凝ったことをやり始めるとシェル地獄に陥る
• gradleやYeoman, rakeなどのビルドツールの活用必須
• 大規模に走らせ始めるとランニングコストがかかる
• サービスが止まった時に焦...
Jenkinsへの影響
• Jenkins自体も、プラグインの固まり方式以外の手段を取り始
めている
Jenkins Workflow Plugin
def flow
node('master') {
git url: 'https://hoge...
ギルドワークスのCI事情
2015/07/11(土) CI勉強会 #vshtc 27
使っているCI Service
• Circle CI
• Wercker CI
2015/07/11(土) CI勉強会 #vshtc 28
2015/07/11(土) CI勉強会 #vshtc 29
Why Circle CI?
• Privateの無料利用枠で結構行ける
• Linux環境のみならず、iOSのビルドもできる
• チャットで結構素早くレスポンスが帰ってくるので安心
• 環境追随もそこそこ速い
2015/07/11(土) CI...
Circle CIを用いたiOSビルドパイプライン
2015/07/11(土) CI勉強会 #vshtc 31
2015/07/11(土) CI勉強会 #vshtc 32
Why Wercker CI?
• そこそこ長期間サービス提供しているのに完全無償
• ビルドコンテナの柔軟性が非常に高い
2015/07/11(土) CI勉強会 #vshtc 33
Wercker CIの活用どころ
• 他のCIサービスでよく困ること
• yum install texlive-latex おせえええええ!!
• gem install nokogiri おせえええええ!!
• 環境構築に時間が掛かる
• ...
WerckerCIのビルドコンテナ
• 背後でdocker or Vagrant LXCをぶん回しているっぽい
• コンテナのビルド結果を定義できる
• コンテナそのものをビルドして保存しておいてくれる
• 保存したコンテナを自由に使える
20...
ギルドワークスでの活用例
• 書籍自動ビルドサービス
• PDFのビルド環境は結構大変、かつ標準コンテナではできな
いこと
• calibreなどの、マニアックでそこそこ導入に時間がかかるソ
フトウェア入のコンテナを作った
• https://...
これからのCI
2015/07/11(土) CI勉強会 #vshtc 37
世は正に大CI時代
2015/07/11(土) CI勉強会 #vshtc 38
変えられない潮流
• コンテナ式のDisposableな環境でのビルド・テスト
• あるいは、ビルドしたコンテナをそのままクラウドへ
• 「ちゃんと動いたものをそのまま本番へ」
2015/07/11(土) CI勉強会 #vshtc 39
それでもビルドは回っている
• 「ビルドすること」は目的でなく手段
• ユーザの価値にならないと意味無いですよねー
• 世の潮流を見ながら、自分自身の環境にあったビルド環境を
考えましょう
• 言うても自家Jenkinsの要望はまだまだ強い
2...
Enjoy, Continuous Integration!!
2015/07/11(土) CI勉強会 #vshtc 41
Upcoming SlideShare
Loading in …5
×

ポストJenkins時代のCI戦略

15,631 views

Published on

VSハッカソン倶楽部 CI勉強会で発表した資料となります。

https://vshtc.doorkeeper.jp/events/26853

Published in: Engineering
  • Be the first to comment

ポストJenkins時代のCI戦略

  1. 1. ポストJenkins時代の 自動化戦略 Posaune @ Guildworks 2015/07/11(土) CI勉強会 #vshtc 1
  2. 2. 自己紹介 • 前川博志 aka @Posaune • ギルドワークス株式会社で働いています • 勝手にALMエンジニアを名乗ってます • Microsoft MVP for Visual Studio ALM 2015/07/11(土) CI勉強会 #vshtc 2
  3. 3. ギルドワークス • 現在7名の小さな会社 • 設立一年ちょっとのベンチャー企業 • ソフトウェアの超上流での見立てから開発、果ては現場改善 までやってます • モットーは「正しいものを正しくつくる!」 2015/07/11(土) CI勉強会 #vshtc 3
  4. 4. 諸々お知らせ! from ギルドワークス 2015/07/11(土) CI勉強会 #vshtc 4
  5. 5. Blog やってます! http://blog.guildworks.jp/ 2015/07/11(土) CI勉強会 #vshtc 5
  6. 6. カンファレンス、 やります! 2015/07/11(土) CI勉強会 #vshtc 6
  7. 7. 2015/07/11(土) CI勉強会 #vshtc 7
  8. 8. お悩み・相談募集中 • 現場が同しようもないから何とかしたい・・・ • アイデアを形にできない・・・ • お気軽にご相談を! http://guildworks.jp/about/work/ 2015/07/11(土) CI勉強会 #vshtc 8
  9. 9. お知らせ終わり。 2015/07/11(土) CI勉強会 #vshtc 9
  10. 10. 本日のAgenda • Jenkins一択時代の終焉 • ポストJenkins時代のCI • ギルドワークスのCI事情 2015/07/11(土) CI勉強会 #vshtc 10
  11. 11. Jenkins一択時代の終焉 2015/07/11(土) CI勉強会 #vshtc 11
  12. 12. Jenkinsのもたらしたもの • 職人さん!ビルドお願いしやす! Jenkinsさんがビルドしといてくれたの使おう • 自動ビルドとかわからないこわい Jenkinsさんならなんとかなる! • この作業めんどいー。 それJenkinsでできませんか? 2015/07/11(土) CI勉強会 #vshtc 12
  13. 13. Jenkins後の世界 • 自動ビルドの「キャズム」超え • CIを当たり前に 2015/07/11(土) CI勉強会 #vshtc 13
  14. 14. Jenkins後の世界 • 自動ビルドの「キャズム」超え • CIを当たり前に • Jenkins職人 2015/07/11(土) CI勉強会 #vshtc 14
  15. 15. Jenkinsの"職人化" • あなたのところのJenkins、みんなメンテできますか? • どんなプラグインが入っているか、管理できてますか? • 新しいJobを追加するとき、誰がやっても同じようなJobを作 ってくれますか? • Jenkinsサーバが煙をあげていても、あなたは有給をとれます か? 2015/07/11(土) CI勉強会 #vshtc 15
  16. 16. Jenkinsがボトルネックに • 高度に専門化されたシェル + 手作業 高度に専門化されたJenkinsジョブ • 結局トラブル時にはJenkins職人が呼ばれる • Jenkinsサーバでエラーが起こると色々終わる • 10年継ぎ足し続けたJenkinsジョブ、ってゾッとしない? 2015/07/11(土) CI勉強会 #vshtc 16
  17. 17. Jenkins以外の選択肢 • ビルドツール・ビルドサポートツールの進化により、 Jenkinsのジョブ相当の物は簡単にスクリプトで書けるよう になった • ローカルのVMが流行るかと思ったらもうそこは クラウドと コンテナの世界 だった。 2015/07/11(土) CI勉強会 #vshtc 17
  18. 18. Jenkins以外の選択肢 • なら、クラウド上に単純な定形作業だけをしてくれる、ビル ドサーバ群があればいいんじゃね? • そう、 CI as a Service や!! 2015/07/11(土) CI勉強会 #vshtc 18
  19. 19. ポストJenkins時代のCI 2015/07/11(土) CI勉強会 #vshtc 19
  20. 20. CI as a Service • 文字通り、サービスとしてCI(ビルド)を提供している • Travis CI • Circle CI • drone.io • Wercker • Visual Studio Online 2015/07/11(土) CI勉強会 #vshtc 20
  21. 21. CI as a Service • だいたい以下のことを行う • あたらしいVMを起動 • VMの環境セットアップ(yum install) • ビルド・テスト環境のセットアップ(bundle install) • ビルド・テスト(rake build ) • 別の環境にデプロイメント(git push heroku master) 2015/07/11(土) CI勉強会 #vshtc 21
  22. 22. 設定はこんな感じに machine: environment: XCODE_SCHEME: SwiftLesson test: override:| - mkdir -p $CIRCLE_TEST_REPORTS/xctest - Xctool -project SwiftLesson.xcodeproj -scheme SwiftLesson -sdk iphonesimulator -reporter junit:$CIRCLE_TEST_REPORTS/xctest/test-result.xml clean test (Circle CIの例) 2015/07/11(土) CI勉強会 #vshtc 22
  23. 23. CI as a Service のメリット • サーバを用意せずに始められる • 使い捨てのクリーンな環境が保証される • CIサービス上の設定項目はそんなに無いので職人かを防げる • 無料枠がリッチなサービスが多い • 最初の導入ステップが簡単 • 他のサービスとの連携が簡単で、リモート開発との相性◎ 2015/07/11(土) CI勉強会 #vshtc 23
  24. 24. デモ: CircleCIでビルド してみよう! 2015/07/11(土) CI勉強会 #vshtc 24
  25. 25. CI as a Service のデメリット • 凝ったことをやり始めるとシェル地獄に陥る • gradleやYeoman, rakeなどのビルドツールの活用必須 • 大規模に走らせ始めるとランニングコストがかかる • サービスが止まった時に焦る • ローカルでも動くスクリプトをサービス上でも叩く、とか しとかないと困る 2015/07/11(土) CI勉強会 #vshtc 25
  26. 26. Jenkinsへの影響 • Jenkins自体も、プラグインの固まり方式以外の手段を取り始 めている Jenkins Workflow Plugin def flow node('master') { git url: 'https://hogehoge@bitbucket.org/hogehoge/workflow-test.git' flow = load 'groovy/flow.groovy' flow.builds() } 2015/07/11(土) CI勉強会 #vshtc 26
  27. 27. ギルドワークスのCI事情 2015/07/11(土) CI勉強会 #vshtc 27
  28. 28. 使っているCI Service • Circle CI • Wercker CI 2015/07/11(土) CI勉強会 #vshtc 28
  29. 29. 2015/07/11(土) CI勉強会 #vshtc 29
  30. 30. Why Circle CI? • Privateの無料利用枠で結構行ける • Linux環境のみならず、iOSのビルドもできる • チャットで結構素早くレスポンスが帰ってくるので安心 • 環境追随もそこそこ速い 2015/07/11(土) CI勉強会 #vshtc 30
  31. 31. Circle CIを用いたiOSビルドパイプライン 2015/07/11(土) CI勉強会 #vshtc 31
  32. 32. 2015/07/11(土) CI勉強会 #vshtc 32
  33. 33. Why Wercker CI? • そこそこ長期間サービス提供しているのに完全無償 • ビルドコンテナの柔軟性が非常に高い 2015/07/11(土) CI勉強会 #vshtc 33
  34. 34. Wercker CIの活用どころ • 他のCIサービスでよく困ること • yum install texlive-latex おせえええええ!! • gem install nokogiri おせえええええ!! • 環境構築に時間が掛かる • werckerなら困らない 2015/07/11(土) CI勉強会 #vshtc 34
  35. 35. WerckerCIのビルドコンテナ • 背後でdocker or Vagrant LXCをぶん回しているっぽい • コンテナのビルド結果を定義できる • コンテナそのものをビルドして保存しておいてくれる • 保存したコンテナを自由に使える 2015/07/11(土) CI勉強会 #vshtc 35
  36. 36. ギルドワークスでの活用例 • 書籍自動ビルドサービス • PDFのビルド環境は結構大変、かつ標準コンテナではできな いこと • calibreなどの、マニアックでそこそこ導入に時間がかかるソ フトウェア入のコンテナを作った • https://github.com/posaunehm/calibre-jp-box 2015/07/11(土) CI勉強会 #vshtc 36
  37. 37. これからのCI 2015/07/11(土) CI勉強会 #vshtc 37
  38. 38. 世は正に大CI時代 2015/07/11(土) CI勉強会 #vshtc 38
  39. 39. 変えられない潮流 • コンテナ式のDisposableな環境でのビルド・テスト • あるいは、ビルドしたコンテナをそのままクラウドへ • 「ちゃんと動いたものをそのまま本番へ」 2015/07/11(土) CI勉強会 #vshtc 39
  40. 40. それでもビルドは回っている • 「ビルドすること」は目的でなく手段 • ユーザの価値にならないと意味無いですよねー • 世の潮流を見ながら、自分自身の環境にあったビルド環境を 考えましょう • 言うても自家Jenkinsの要望はまだまだ強い 2015/07/11(土) CI勉強会 #vshtc 40
  41. 41. Enjoy, Continuous Integration!! 2015/07/11(土) CI勉強会 #vshtc 41

×