xcode 7で始めるci
TRANSCRIPT
![Page 1: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/1.jpg)
CONTINUOUS INTEGRATION
iOS 9 Bootcamp #8
Classmethod, IncYuki Suwa
![Page 2: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/2.jpg)
YUKI SUWAMobile App Developer & Designer
Web App Engineer CTO, underscore Inc.
![Page 3: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/3.jpg)
THANKS FOR YOUR COMING!
3
![Page 4: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/4.jpg)
Agenda
CI と CD とは何か ?
Bots + Xcode 7 で始める CI
CI が導入できるようになる !
4
![Page 5: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/5.jpg)
DO YOU KNOW CI ?
5
![Page 6: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/6.jpg)
What is the CI ?
継続的インテグレーションのこと
プロジェクトの成果物を継続的に統合する習慣
統合、ビルド、テスト、インスペクションを継続的に行っていく
XPのプラクティスの1つ6
![Page 7: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/7.jpg)
What is the CD ?
継続的デリバリのこと
プロジェクトの成果物を継続的に届ける習慣
CI と一緒に導入することが多い
7
![Page 8: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/8.jpg)
WHY DO YOU NEED ?
8
![Page 9: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/9.jpg)
Extreme Programming における 5 つの価値
9
Simplicity Communication
Feedback
Respect Courage
Communication
Feedback
![Page 10: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/10.jpg)
10
Delivery Feedback
![Page 11: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/11.jpg)
CI / CD のメリット
継続的なフィードバックが得られる
ビルドの手間を削減できる
品質の向上活動を支える
11
![Page 12: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/12.jpg)
HOW TO BUILD CI
12
![Page 13: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/13.jpg)
CI / CD Flow
13
![Page 14: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/14.jpg)
CI / CD Tools & Services
14
Bots Jenkins
![Page 15: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/15.jpg)
15
Bots
![Page 16: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/16.jpg)
Apple 純正の CI ツール
Xcode プロジェクトを継続的に統合
Bots モニター (Web) がかっこいい
16
What is the Bots ?
![Page 17: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/17.jpg)
17
![Page 18: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/18.jpg)
BUT, BUILDING THE CI IS TROUBLESOME
18
![Page 19: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/19.jpg)
CI 環境構築は煩わしい !
iOS アプリならではの証明書問題
ビルドエラーが追いづらい (ハマる)
サービス同士の連携が絡むと複雑
19
![Page 20: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/20.jpg)
PROGRESSIVE BUILD
20
![Page 21: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/21.jpg)
21
![Page 22: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/22.jpg)
BUILD BOT
22
![Page 23: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/23.jpg)
Bot を作るまで
ビルドマシンを用意する
OS X Server をインストールする
開発マシンで Bot の作成を行う
23
1
2
3
![Page 24: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/24.jpg)
ビルドマシンを用意する
24
1
![Page 25: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/25.jpg)
OS X Server をインストールする
App Store で ¥2,400 で購入可能
https://itunes.apple.com/jp/app/os-x-server/id883878097
Apple Developer であれば無償
https://developer.apple.com/osx/download/
25
2
![Page 26: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/26.jpg)
26
![Page 27: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/27.jpg)
27
Xcode を選択
Xcode Serverを有効化
![Page 28: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/28.jpg)
28
![Page 29: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/29.jpg)
開発マシンで Bot を作成する
29
3
![Page 30: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/30.jpg)
30
Schemeを共有
![Page 31: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/31.jpg)
31
![Page 32: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/32.jpg)
32
どのタイミングで実行するか
Manual 手動でのみ実行する
Periodically 定期的に実行する
On Commit Pushされたら実行する
![Page 33: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/33.jpg)
33
どのようなアクションを実行するか
Analyze ソースコードを解析する
Test テストを実行する
Archive アプリの作成を行う
![Page 34: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/34.jpg)
34
プロジェクトをクリーンするか
Never クリーンしないAlways 毎回クリーンする
Once a day 1日1回クリーンするOnce a week 1週間に1回クリーンする
![Page 35: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/35.jpg)
35
個別に指定できる
![Page 36: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/36.jpg)
36
統合の前に実行
統合の後に実行
![Page 37: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/37.jpg)
37
![Page 38: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/38.jpg)
38
![Page 39: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/39.jpg)
SHARING
39
![Page 40: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/40.jpg)
40
![Page 41: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/41.jpg)
Monitor Bots from a Web Browser
https://ci-machine-ip/xcode/bots/latest
![Page 42: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/42.jpg)
42
![Page 43: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/43.jpg)
43
ログなどをダウンロード可能
ビルドをマーク
![Page 44: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/44.jpg)
44
![Page 45: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/45.jpg)
ADVANCE
45
![Page 46: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/46.jpg)
COVERAGE
46
![Page 47: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/47.jpg)
Code Coverage
コード網羅率のこと
ソースコードがテストされた割合の指標
網羅率が高いほどバグの検出率が上がる
品質を左右する指標とも言える
47
![Page 48: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/48.jpg)
48
有効化する
![Page 49: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/49.jpg)
49
テストコードの網羅率
![Page 50: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/50.jpg)
ANALYZE
50
![Page 51: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/51.jpg)
Analyze with Xcode
Xcode の Analyze 機能による静的解析を実行可能
メモリリークや null ポインタへのアクセスなど潜在的なバグを検出
51
![Page 52: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/52.jpg)
52
有効化する
![Page 53: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/53.jpg)
DELIVERY
53
![Page 54: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/54.jpg)
継続的なデリバリ
Bots で iOS デバイスにインストール可能な
IPA を作成可能
iOS デバイスで直接インストール可能
54
![Page 55: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/55.jpg)
55
チームを追加
![Page 56: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/56.jpg)
56
有効化する
![Page 57: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/57.jpg)
57
![Page 58: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/58.jpg)
OTHER
58
![Page 59: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/59.jpg)
59
統合の前に実行
統合の後に実行
![Page 60: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/60.jpg)
例えば…
CocoaPods の利用
ビルド結果をチャットに通知
60
などなど…
自由に拡張可能です!!
![Page 61: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/61.jpg)
Xcode CI Script Variables
https://gist.github.com/quellish/f279f7b00c1bfd343468
![Page 62: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/62.jpg)
SUMMARY
62
![Page 63: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/63.jpg)
まとめ
CI / CD やろうよ
最初から全部はできないから、できるところから始めた方が良いよ
総合的に考えると効率的だよ
機械的な作業を自動化し、価値のある作業に集中しよう!
63
![Page 64: Xcode 7で始めるCI](https://reader030.vdocuments.net/reader030/viewer/2022020113/58ecb9cc1a28ab60498b4717/html5/thumbnails/64.jpg)