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