SlideShare a Scribd company logo
ポストJenkins時代の
自動化戦略
Posaune @ Guildworks
2015/07/11(土) CI勉強会 #vshtc 1
自己紹介
• 前川博志 aka @Posaune
• ギルドワークス株式会社で働いています
• 勝手にALMエンジニアを名乗ってます
• Microsoft MVP for Visual Studio ALM
2015/07/11(土) CI勉強会 #vshtc 2
ギルドワークス
• 現在7名の小さな会社
• 設立一年ちょっとのベンチャー企業
• ソフトウェアの超上流での見立てから開発、果ては現場改善
までやってます
• モットーは「正しいものを正しくつくる!」
2015/07/11(土) CI勉強会 #vshtc 3
諸々お知らせ!
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 8
お知らせ終わり。
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でできませんか?
2015/07/11(土) CI勉強会 #vshtc 12
Jenkins後の世界
• 自動ビルドの「キャズム」超え
• CIを当たり前に
2015/07/11(土) CI勉強会 #vshtc 13
Jenkins後の世界
• 自動ビルドの「キャズム」超え
• CIを当たり前に
• Jenkins職人
2015/07/11(土) CI勉強会 #vshtc 14
Jenkinsの"職人化"
• あなたのところのJenkins、みんなメンテできますか?
• どんなプラグインが入っているか、管理できてますか?
• 新しいJobを追加するとき、誰がやっても同じようなJobを作
ってくれますか?
• Jenkinsサーバが煙をあげていても、あなたは有給をとれます
か?
2015/07/11(土) CI勉強会 #vshtc 15
Jenkinsがボトルネックに
• 高度に専門化されたシェル + 手作業
高度に専門化されたJenkinsジョブ
• 結局トラブル時にはJenkins職人が呼ばれる
• Jenkinsサーバでエラーが起こると色々終わる
• 10年継ぎ足し続けたJenkinsジョブ、ってゾッとしない?
2015/07/11(土) CI勉強会 #vshtc 16
Jenkins以外の選択肢
• ビルドツール・ビルドサポートツールの進化により、
Jenkinsのジョブ相当の物は簡単にスクリプトで書けるよう
になった
• ローカルのVMが流行るかと思ったらもうそこは クラウドと
コンテナの世界 だった。
2015/07/11(土) CI勉強会 #vshtc 17
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/11(土) CI勉強会 #vshtc 20
CI as a Service
• だいたい以下のことを行う
• あたらしいVMを起動
• VMの環境セットアップ(yum install)
• ビルド・テスト環境のセットアップ(bundle install)
• ビルド・テスト(rake build )
• 別の環境にデプロイメント(git push heroku master)
2015/07/11(土) CI勉強会 #vshtc 21
設定はこんな感じに
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
CI as a Service のメリット
• サーバを用意せずに始められる
• 使い捨てのクリーンな環境が保証される
• CIサービス上の設定項目はそんなに無いので職人かを防げる
• 無料枠がリッチなサービスが多い
• 最初の導入ステップが簡単
• 他のサービスとの連携が簡単で、リモート開発との相性◎
2015/07/11(土) CI勉強会 #vshtc 23
デモ: CircleCIでビルド
してみよう!
2015/07/11(土) CI勉強会 #vshtc 24
CI as a Service のデメリット
• 凝ったことをやり始めるとシェル地獄に陥る
• gradleやYeoman, rakeなどのビルドツールの活用必須
• 大規模に走らせ始めるとランニングコストがかかる
• サービスが止まった時に焦る
• ローカルでも動くスクリプトをサービス上でも叩く、とか
しとかないと困る
2015/07/11(土) CI勉強会 #vshtc 25
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
ギルドワークスの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勉強会 #vshtc 30
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 おせえええええ!!
• 環境構築に時間が掛かる
• werckerなら困らない
2015/07/11(土) CI勉強会 #vshtc 34
WerckerCIのビルドコンテナ
• 背後でdocker or Vagrant LXCをぶん回しているっぽい
• コンテナのビルド結果を定義できる
• コンテナそのものをビルドして保存しておいてくれる
• 保存したコンテナを自由に使える
2015/07/11(土) CI勉強会 #vshtc 35
ギルドワークスでの活用例
• 書籍自動ビルドサービス
• PDFのビルド環境は結構大変、かつ標準コンテナではできな
いこと
• calibreなどの、マニアックでそこそこ導入に時間がかかるソ
フトウェア入のコンテナを作った
• https://github.com/posaunehm/calibre-jp-box
2015/07/11(土) CI勉強会 #vshtc 36
これからのCI
2015/07/11(土) CI勉強会 #vshtc 37
世は正に大CI時代
2015/07/11(土) CI勉強会 #vshtc 38
変えられない潮流
• コンテナ式のDisposableな環境でのビルド・テスト
• あるいは、ビルドしたコンテナをそのままクラウドへ
• 「ちゃんと動いたものをそのまま本番へ」
2015/07/11(土) CI勉強会 #vshtc 39
それでもビルドは回っている
• 「ビルドすること」は目的でなく手段
• ユーザの価値にならないと意味無いですよねー
• 世の潮流を見ながら、自分自身の環境にあったビルド環境を
考えましょう
• 言うても自家Jenkinsの要望はまだまだ強い
2015/07/11(土) CI勉強会 #vshtc 40
Enjoy, Continuous Integration!!
2015/07/11(土) CI勉強会 #vshtc 41

More Related Content

ポストJenkins時代のCI戦略