Top Banner
ポストJenkins時代の 自動化戦略 Posaune @ Guildworks 2015/07/11(土) CI勉強会 #vshtc 1
41

ポストJenkins時代のCI戦略

Aug 06, 2015

Download

Engineering

Hiroshi Maekawa
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ポストJenkins時代のCI戦略

ポストJenkins時代の自動化戦略

Posaune @ Guildworks

2015/07/11(土) CI勉強会 #vshtc 1

Page 2: ポストJenkins時代のCI戦略

自己紹介• 前川博志 aka @Posaune

• ギルドワークス株式会社で働いています

• 勝手にALMエンジニアを名乗ってます• Microsoft MVP for Visual Studio ALM

2015/07/11(土) CI勉強会 #vshtc 2

Page 3: ポストJenkins時代のCI戦略

ギルドワークス• 現在7名の小さな会社• 設立一年ちょっとのベンチャー企業• ソフトウェアの超上流での見立てから開発、果ては現場改善までやってます

• モットーは「正しいものを正しくつくる!」

2015/07/11(土) CI勉強会 #vshtc 3

Page 4: ポストJenkins時代のCI戦略

諸々お知らせ!from ギルドワークス

2015/07/11(土) CI勉強会 #vshtc 4

Page 5: ポストJenkins時代のCI戦略

Blog やってます!http://blog.guildworks.jp/

2015/07/11(土) CI勉強会 #vshtc 5

Page 6: ポストJenkins時代のCI戦略

カンファレンス、やります!

2015/07/11(土) CI勉強会 #vshtc 6

Page 7: ポストJenkins時代のCI戦略

2015/07/11(土) CI勉強会 #vshtc 7

Page 8: ポストJenkins時代のCI戦略

お悩み・相談募集中• 現場が同しようもないから何とかしたい・・・• アイデアを形にできない・・・• お気軽にご相談を! ⇒ http://guildworks.jp/about/work/

2015/07/11(土) CI勉強会 #vshtc 8

Page 9: ポストJenkins時代のCI戦略

お知らせ終わり。

2015/07/11(土) CI勉強会 #vshtc 9

Page 10: ポストJenkins時代のCI戦略

本日のAgenda• Jenkins一択時代の終焉• ポストJenkins時代のCI

• ギルドワークスのCI事情

2015/07/11(土) CI勉強会 #vshtc 10

Page 11: ポストJenkins時代のCI戦略

Jenkins一択時代の終焉

2015/07/11(土) CI勉強会 #vshtc 11

Page 12: ポストJenkins時代のCI戦略

Jenkinsのもたらしたもの• 職人さん!ビルドお願いしやす!⇒ Jenkinsさんがビルドしといてくれたの使おう

• 自動ビルドとかわからないこわい⇒ Jenkinsさんならなんとかなる!

• この作業めんどいー。⇒ それJenkinsでできませんか?

2015/07/11(土) CI勉強会 #vshtc 12

Page 13: ポストJenkins時代のCI戦略

Jenkins後の世界• 自動ビルドの「キャズム」超え

• CIを当たり前に

2015/07/11(土) CI勉強会 #vshtc 13

Page 14: ポストJenkins時代のCI戦略

Jenkins後の世界• 自動ビルドの「キャズム」超え

• CIを当たり前に

• Jenkins職人

2015/07/11(土) CI勉強会 #vshtc 14

Page 15: ポストJenkins時代のCI戦略

Jenkinsの"職人化"• あなたのところのJenkins、みんなメンテできますか?• どんなプラグインが入っているか、管理できてますか?• 新しいJobを追加するとき、誰がやっても同じようなJobを作ってくれますか?

• Jenkinsサーバが煙をあげていても、あなたは有給をとれますか?

2015/07/11(土) CI勉強会 #vshtc 15

Page 16: ポストJenkins時代のCI戦略

Jenkinsがボトルネックに• 高度に専門化されたシェル + 手作業⇒ 高度に専門化されたJenkinsジョブ

• 結局トラブル時にはJenkins職人が呼ばれる• Jenkinsサーバでエラーが起こると色々終わる• 10年継ぎ足し続けたJenkinsジョブ、ってゾッとしない?

2015/07/11(土) CI勉強会 #vshtc 16

Page 17: ポストJenkins時代のCI戦略

Jenkins以外の選択肢• ビルドツール・ビルドサポートツールの進化により、

Jenkinsのジョブ相当の物は簡単にスクリプトで書けるようになった

• ローカルのVMが流行るかと思ったらもうそこは クラウドとコンテナの世界 だった。

2015/07/11(土) CI勉強会 #vshtc 17

Page 18: ポストJenkins時代のCI戦略

Jenkins以外の選択肢• なら、クラウド上に単純な定形作業だけをしてくれる、ビルドサーバ群があればいいんじゃね?

• そう、 CI as a Service や!!

2015/07/11(土) CI勉強会 #vshtc 18

Page 19: ポストJenkins時代のCI戦略

ポストJenkins時代のCI

2015/07/11(土) CI勉強会 #vshtc 19

Page 20: ポストJenkins時代のCI戦略

CI as a Service• 文字通り、サービスとしてCI(ビルド)を提供している

• Travis CI

• Circle CI

• drone.io

• Wercker

• Visual Studio Online

2015/07/11(土) CI勉強会 #vshtc 20

Page 21: ポストJenkins時代のCI戦略

CI as a Service• だいたい以下のことを行う

• あたらしいVMを起動

• VMの環境セットアップ(yum install)

• ビルド・テスト環境のセットアップ(bundle install)

• ビルド・テスト(rake build )

• 別の環境にデプロイメント(git push heroku master)2015/07/11(土) CI勉強会 #vshtc 21

Page 22: ポストJenkins時代のCI戦略

設定はこんな感じに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

Page 23: ポストJenkins時代のCI戦略

CI as a Service のメリット• サーバを用意せずに始められる• 使い捨てのクリーンな環境が保証される• CIサービス上の設定項目はそんなに無いので職人かを防げる• 無料枠がリッチなサービスが多い• 最初の導入ステップが簡単• 他のサービスとの連携が簡単で、リモート開発との相性◎2015/07/11(土) CI勉強会 #vshtc 23

Page 24: ポストJenkins時代のCI戦略

デモ: CircleCIでビルドしてみよう!

2015/07/11(土) CI勉強会 #vshtc 24

Page 25: ポストJenkins時代のCI戦略

CI as a Service のデメリット• 凝ったことをやり始めるとシェル地獄に陥る

• gradleやYeoman, rakeなどのビルドツールの活用必須• 大規模に走らせ始めるとランニングコストがかかる• サービスが止まった時に焦る

• ローカルでも動くスクリプトをサービス上でも叩く、とかしとかないと困る

2015/07/11(土) CI勉強会 #vshtc 25

Page 26: ポストJenkins時代のCI戦略

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

Page 27: ポストJenkins時代のCI戦略

ギルドワークスのCI事情

2015/07/11(土) CI勉強会 #vshtc 27

Page 28: ポストJenkins時代のCI戦略

使っているCI Service• Circle CI• Wercker CI

2015/07/11(土) CI勉強会 #vshtc 28

Page 29: ポストJenkins時代のCI戦略

2015/07/11(土) CI勉強会 #vshtc 29

Page 30: ポストJenkins時代のCI戦略

Why Circle CI?• Privateの無料利用枠で結構行ける• Linux環境のみならず、iOSのビルドもできる• チャットで結構素早くレスポンスが帰ってくるので安心• 環境追随もそこそこ速い

2015/07/11(土) CI勉強会 #vshtc 30

Page 31: ポストJenkins時代のCI戦略

Circle CIを用いたiOSビルドパイプライン

2015/07/11(土) CI勉強会 #vshtc 31

Page 32: ポストJenkins時代のCI戦略

2015/07/11(土) CI勉強会 #vshtc 32

Page 33: ポストJenkins時代のCI戦略

Why Wercker CI?• そこそこ長期間サービス提供しているのに完全無償• ビルドコンテナの柔軟性が非常に高い

2015/07/11(土) CI勉強会 #vshtc 33

Page 34: ポストJenkins時代のCI戦略

Wercker CIの活用どころ• 他のCIサービスでよく困ること

• yum install texlive-latex おせえええええ!!• gem install nokogiri おせえええええ!!

• 環境構築に時間が掛かる• werckerなら困らない

2015/07/11(土) CI勉強会 #vshtc 34

Page 35: ポストJenkins時代のCI戦略

WerckerCIのビルドコンテナ• 背後でdocker or Vagrant LXCをぶん回しているっぽい• コンテナのビルド結果を定義できる• コンテナそのものをビルドして保存しておいてくれる• 保存したコンテナを自由に使える

2015/07/11(土) CI勉強会 #vshtc 35

Page 36: ポストJenkins時代のCI戦略

ギルドワークスでの活用例• 書籍自動ビルドサービス• PDFのビルド環境は結構大変、かつ標準コンテナではできないこと

• calibreなどの、マニアックでそこそこ導入に時間がかかるソフトウェア入のコンテナを作った• https://github.com/posaunehm/calibre-jp-box

2015/07/11(土) CI勉強会 #vshtc 36

Page 37: ポストJenkins時代のCI戦略

これからのCI

2015/07/11(土) CI勉強会 #vshtc 37

Page 38: ポストJenkins時代のCI戦略

世は正に大CI時代

2015/07/11(土) CI勉強会 #vshtc 38

Page 39: ポストJenkins時代のCI戦略

変えられない潮流• コンテナ式のDisposableな環境でのビルド・テスト• あるいは、ビルドしたコンテナをそのままクラウドへ• 「ちゃんと動いたものをそのまま本番へ」

2015/07/11(土) CI勉強会 #vshtc 39

Page 40: ポストJenkins時代のCI戦略

それでもビルドは回っている• 「ビルドすること」は目的でなく手段

• ユーザの価値にならないと意味無いですよねー• 世の潮流を見ながら、自分自身の環境にあったビルド環境を考えましょう

• 言うても自家Jenkinsの要望はまだまだ強い

2015/07/11(土) CI勉強会 #vshtc 40

Page 41: ポストJenkins時代のCI戦略

Enjoy, Continuous Integration!!

2015/07/11(土) CI勉強会 #vshtc 41