xcodeの管理を楽に - jenkins編 -
TRANSCRIPT
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 回チェック
CocoaPodsGem
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 プラグイン• 公開予定なので是非ご利用ください