Xcode 7で始めるCI

  • View
    5.095

  • Download
    1

  • Category

    Mobile

Preview:

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