SlideShare a Scribd company logo
Copyright © DeNA Co.,Ltd. All Rights Reserved.
AKIBA.swift 第10回
2017/01/31 (Tue)
平田敏之@DeNA
Xcodeの管理を楽に
– Jenkins編 -
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 平田 敏之@DeNA
⁃ 経歴
• GWの開発 → ホムペサービスの開発、iOSアプリの開発 → SWET
⁃ SWET (Software Engineer in Test)
• 事業サポートチーム / テスト基盤チーム
• ミッション
⁃ DeNAサービス全般の品質向上
⁃ DeNAエンジニアの開発生産性向上
⁃ 私がやっていること(の一部)
• クライアントアプリ周りのテスト戦略、自動テストの開発
• CI/CD環境整備
• テスト基盤環境の開発
• iOS Test Night主催(#3は2017/3/13(月)開催)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
はじめに
 バージョン管理でツラミを経験していませんか?
 そのツラミを軽減するためのサービスについて以下で発表
⁃ iOS Test Night #2
• 「バージョンアップの対応を軽減するためのサービスの構築」
• 自分たちでコントールしづらい箇所の管理を以下に軽減するか
• 発表資料:http://www.slideshare.net/tarappo/ss-71179542
 Xcodeの管理は特に大変
⁃ そこで今回は「Xcodeの管理編」
• (iOS Test Night#2の発表時には間に合わなかった話)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Xcodeのバージョンの管理のツラミ
Xcodeで苦労した経験がない人はいますか?
 1) Xcodeは複数バージョン保持していないといけない
⁃ 特にβリリースの時期は…
• ローカル環境だとxcode-installで管理している人もいるのでは
• https://github.com/KrauseFx/xcode-install
 2) Xcodeのバージョンアップで(よく)あること
⁃ ビルドが通らない
• 関連するライブラリも当然ながら
⁃ 設定が増えている
• 設定しておかないとビルドが..
⁃ サポートが打ち切られた
• この新バージョンから◯◯が使えなくなった
⁃ 例) Swift2.3…
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Xcodeのバージョンの管理における対応
 1) Xcodeの複数バージョン管理
⁃ 管理方法はKyobashi.swift #2で発表
• 発表資料 http://www.slideshare.net/tarappo/iosci
⁃ 上記をさらに改良したJenkinsプラグインをそろそろ公開
• 「Application Detector Plugin」
 2) Xcodeの新バージョンが出たら自動で(軽く)動作確認
⁃ 1)のJenkinsプラグインとAnsibleを併用し動作確認
⁃ 動作結果次第で調査をするしないを決める
Copyright © DeNA Co.,Ltd. All Rights Reserved.
1) Xcodeの複数バージョン管理(Jenkinsプラグイン)
 自身でアプリ周りの定義をすることが可能
⁃ 従ってXcode以外も対応可能でありUnityなどでも使える
 ビルド時に利用するバージョンを選択可能
⁃ 指定したバージョンがインストールされているJenkins(slave)で動作する
設定画面
ビルドパラメータ
固定化する場合
Copyright © DeNA Co.,Ltd. All Rights Reserved.
1) Xcodeのインストール方法
 Jenkinsの構成管理はAnsibileを利用
⁃ Jenkins jobを使ってJenkins自らにセットアップさせている
• iOSの場合は(主に)以下 / Androidなどのセットアップもやっています
⁃ Xcodeのインストール
• 複数指定可能
⁃ certificateファイルのimport
⁃ Provisioning Profileの設置
• 複数Developer対応
Jenkinsのslaveであれば複数マシン一気にセットアップ可能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
2) バージョンアップ動作確認用システム(Xcodeの場合の挙動)
Xcodenのインストール
(Ansible)
バージョンチェック
システム
1日1回チェック
CocoaPods
Gem
Xcode
Rundeck
4) 動作確認結果を通知
1) 新バージョン通知
サンプルアプリ
(swift3)
2) Xcodeのインストー
ル
3) 動作確認
エラーが出たら調査
Copyright © DeNA Co.,Ltd. All Rights Reserved.
サンプルアプリでやっている動作確認の内容
 サンプルアプリとは?
⁃ 以下の目的で作られたアプリ(Swift3対応済)
• 各ライブラリの動作チェック用
• テスティングフレームワークのテスト用
 やっていること
⁃ バージョンアップしたライブラリに応じてやることが決まる
• ライブラリとおこなうべきアクション(fastlaneのlane)の定義書がある
⁃ Xcodeの場合は以下をおこなう
• アプリのビルド
• UI自動テスト
⁃ EarlGrey
⁃ XCUITest
Copyright © DeNA Co.,Ltd. All Rights Reserved.
最後に
 自動化できそうなことは自動化してやるべきことに注力しましょう
⁃ [注意]
• 費用対効果があるので何でも自動化すればいいわけではない
⁃ 自動化のために使えるツールで公開できるものはどんどん公開して
いきますので是非ご利用ください
 まずは、
⁃ Xcode複数バージョン管理用のJenkinsプラグイン
• 公開予定なので是非ご利用ください

More Related Content

Xcodeの管理を楽に - Jenkins編 -

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. AKIBA.swift 第10回 2017/01/31 (Tue) 平田敏之@DeNA Xcodeの管理を楽に – Jenkins編 -
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自己紹介  平田 敏之@DeNA ⁃ 経歴 • GWの開発 → ホムペサービスの開発、iOSアプリの開発 → SWET ⁃ SWET (Software Engineer in Test) • 事業サポートチーム / テスト基盤チーム • ミッション ⁃ DeNAサービス全般の品質向上 ⁃ DeNAエンジニアの開発生産性向上 ⁃ 私がやっていること(の一部) • クライアントアプリ周りのテスト戦略、自動テストの開発 • CI/CD環境整備 • テスト基盤環境の開発 • iOS Test Night主催(#3は2017/3/13(月)開催)
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. はじめに  バージョン管理でツラミを経験していませんか?  そのツラミを軽減するためのサービスについて以下で発表 ⁃ iOS Test Night #2 • 「バージョンアップの対応を軽減するためのサービスの構築」 • 自分たちでコントールしづらい箇所の管理を以下に軽減するか • 発表資料:http://www.slideshare.net/tarappo/ss-71179542  Xcodeの管理は特に大変 ⁃ そこで今回は「Xcodeの管理編」 • (iOS Test Night#2の発表時には間に合わなかった話)
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. Xcodeのバージョンの管理のツラミ Xcodeで苦労した経験がない人はいますか?  1) Xcodeは複数バージョン保持していないといけない ⁃ 特にβリリースの時期は… • ローカル環境だとxcode-installで管理している人もいるのでは • https://github.com/KrauseFx/xcode-install  2) Xcodeのバージョンアップで(よく)あること ⁃ ビルドが通らない • 関連するライブラリも当然ながら ⁃ 設定が増えている • 設定しておかないとビルドが.. ⁃ サポートが打ち切られた • この新バージョンから◯◯が使えなくなった ⁃ 例) Swift2.3…
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. Xcodeのバージョンの管理における対応  1) Xcodeの複数バージョン管理 ⁃ 管理方法はKyobashi.swift #2で発表 • 発表資料 http://www.slideshare.net/tarappo/iosci ⁃ 上記をさらに改良したJenkinsプラグインをそろそろ公開 • 「Application Detector Plugin」  2) Xcodeの新バージョンが出たら自動で(軽く)動作確認 ⁃ 1)のJenkinsプラグインとAnsibleを併用し動作確認 ⁃ 動作結果次第で調査をするしないを決める
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. 1) Xcodeの複数バージョン管理(Jenkinsプラグイン)  自身でアプリ周りの定義をすることが可能 ⁃ 従ってXcode以外も対応可能でありUnityなどでも使える  ビルド時に利用するバージョンを選択可能 ⁃ 指定したバージョンがインストールされているJenkins(slave)で動作する 設定画面 ビルドパラメータ 固定化する場合
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. 1) Xcodeのインストール方法  Jenkinsの構成管理はAnsibileを利用 ⁃ Jenkins jobを使ってJenkins自らにセットアップさせている • iOSの場合は(主に)以下 / Androidなどのセットアップもやっています ⁃ Xcodeのインストール • 複数指定可能 ⁃ certificateファイルのimport ⁃ Provisioning Profileの設置 • 複数Developer対応 Jenkinsのslaveであれば複数マシン一気にセットアップ可能
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. 2) バージョンアップ動作確認用システム(Xcodeの場合の挙動) Xcodenのインストール (Ansible) バージョンチェック システム 1日1回チェック CocoaPods Gem Xcode Rundeck 4) 動作確認結果を通知 1) 新バージョン通知 サンプルアプリ (swift3) 2) Xcodeのインストー ル 3) 動作確認 エラーが出たら調査
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. サンプルアプリでやっている動作確認の内容  サンプルアプリとは? ⁃ 以下の目的で作られたアプリ(Swift3対応済) • 各ライブラリの動作チェック用 • テスティングフレームワークのテスト用  やっていること ⁃ バージョンアップしたライブラリに応じてやることが決まる • ライブラリとおこなうべきアクション(fastlaneのlane)の定義書がある ⁃ Xcodeの場合は以下をおこなう • アプリのビルド • UI自動テスト ⁃ EarlGrey ⁃ XCUITest
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. 最後に  自動化できそうなことは自動化してやるべきことに注力しましょう ⁃ [注意] • 費用対効果があるので何でも自動化すればいいわけではない ⁃ 自動化のために使えるツールで公開できるものはどんどん公開して いきますので是非ご利用ください  まずは、 ⁃ Xcode複数バージョン管理用のJenkinsプラグイン • 公開予定なので是非ご利用ください