ポスト官僚制か,ポスト NPM か?ポスト官僚制か,ポストNPM か?――フッド以降の行政理論の諸相―― 永戸 力* 目次 1.はじめに 2.経営裁量主義とIT革命のインパクト
ポストJenkins時代のCI戦略
-
Upload
hiroshi-maekawa -
Category
Engineering
-
view
4.184 -
download
0
Transcript of ポストJenkins時代のCI戦略
自己紹介• 前川博志 aka @Posaune
• ギルドワークス株式会社で働いています
• 勝手にALMエンジニアを名乗ってます• Microsoft MVP for Visual Studio ALM
2015/07/11(土) CI勉強会 #vshtc 2
ギルドワークス• 現在7名の小さな会社• 設立一年ちょっとのベンチャー企業• ソフトウェアの超上流での見立てから開発、果ては現場改善までやってます
• モットーは「正しいものを正しくつくる!」
2015/07/11(土) CI勉強会 #vshtc 3
お悩み・相談募集中• 現場が同しようもないから何とかしたい・・・• アイデアを形にできない・・・• お気軽にご相談を! ⇒ http://guildworks.jp/about/work/
2015/07/11(土) CI勉強会 #vshtc 8
Jenkinsのもたらしたもの• 職人さん!ビルドお願いしやす!⇒ Jenkinsさんがビルドしといてくれたの使おう
• 自動ビルドとかわからないこわい⇒ Jenkinsさんならなんとかなる!
• この作業めんどいー。⇒ それJenkinsでできませんか?
2015/07/11(土) CI勉強会 #vshtc 12
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
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: SwiftLessontest: 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
CI as a Service のデメリット• 凝ったことをやり始めるとシェル地獄に陥る
• gradleやYeoman, rakeなどのビルドツールの活用必須• 大規模に走らせ始めるとランニングコストがかかる• サービスが止まった時に焦る
• ローカルでも動くスクリプトをサービス上でも叩く、とかしとかないと困る
2015/07/11(土) CI勉強会 #vshtc 25
Jenkinsへの影響• Jenkins自体も、プラグインの固まり方式以外の手段を取り始めている⇒ Jenkins Workflow Plugin
def flownode('master') { git url: 'https://[email protected]/hogehoge/workflow-test.git' flow = load 'groovy/flow.groovy' flow.builds()}
2015/07/11(土) CI勉強会 #vshtc 26
Why Circle CI?• Privateの無料利用枠で結構行ける• Linux環境のみならず、iOSのビルドもできる• チャットで結構素早くレスポンスが帰ってくるので安心• 環境追随もそこそこ速い
2015/07/11(土) CI勉強会 #vshtc 30
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
変えられない潮流• コンテナ式のDisposableな環境でのビルド・テスト• あるいは、ビルドしたコンテナをそのままクラウドへ• 「ちゃんと動いたものをそのまま本番へ」
2015/07/11(土) CI勉強会 #vshtc 39
それでもビルドは回っている• 「ビルドすること」は目的でなく手段
• ユーザの価値にならないと意味無いですよねー• 世の潮流を見ながら、自分自身の環境にあったビルド環境を考えましょう
• 言うても自家Jenkinsの要望はまだまだ強い
2015/07/11(土) CI勉強会 #vshtc 40