Upload
toshiyuki-hirata
View
713
Download
2
Embed Size (px)
Citation preview
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CAMPFIRE iOS #2
2017/06/12(Mon)
平田敏之@DeNA SWET
マスティフ: (for Xcode Beta)
バージョンアップ対応を軽減するためのサービス
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
平田 敏之@DeNA
⁃ SWET (Software Engineer in Test)
• 事業サポートチーム / テスト基盤チーム
• ミッション
⁃ DeNAサービス全般の品質向上
⁃ DeNAエンジニアの開発生産性向上
⁃ 私がやっていること(の一部)
• クライアントアプリ周りのテスト戦略、自動テストの開発
• CI/CD環境整備
• テスト基盤環境の開発
• iOS Test Nightの主催
Copyright © DeNA Co.,Ltd. All Rights Reserved.
はじめに
CAMPFIRE iOS #2のテーマ
⁃ 「WWDC / 新iOSバージョン対応」
• WWDC2017
⁃ Xcode 9 / iOS 11
皆さんは発表に対してどのような感想を持ちましたか?
新機能に対してワクワクする・試してみたい• ARKit!!• XCode9!!• テスト周りの改良!!
ワクワクすると同時に不安がありませんか?• 新機能に対して「どのようにテストしようか」• 既存アプリに対して影響ある新機能や改修がないか
Copyright © DeNA Co.,Ltd. All Rights Reserved.
WWDC2017の影響
すでにリリースされているもの
⁃ 自動アップデート用の段階的リリース
⁃ アプリのサブタイトル(iOS11-)
⁃ プロモーション用テキスト(iOS11-)
現在はβでそのうちリリースされるもの
⁃ Xcode 9
• What’s New in StoreKit / etc
⁃ iOS 11
• Introducing the New App Store / etc
・すでにリリース済みのものは影響がないかすぐにチェックしないといけない・リリース前のものはβじゃなくなるまでにチェックをしないといけない
Copyright © DeNA Co.,Ltd. All Rights Reserved.
「マスティフ」:バージョンアップ対応軽減サービス
マスティフのお仕事 / SWET特製サンプルアプリを利用
⁃ 対象ライブラリがバージョンアップしたら動作確認をする
• バージョンアップに対応が必要かがすぐに分かる
• ビルド時間、ファイルサイズなどの変化が分かる
⁃ 既存ライブラリが動くことを定期的に動作確認する
• 使えなくなったことを早めに知りたい
⁃ 1日1回動作確認を実行
バージョンアップ検知の対象(for iOS)
⁃ Gemfile
⁃ CocoaPods
⁃ Carthage
⁃ Xcode(βも含む)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
システム構成(非常に簡単に)
全体管理
バージョンチェック
動作確認
結果管理
digdag
Jenkins
slack
モバイルアプリ
(iOS / Android)
このバージョンで動作確認してください
あなた自身(Xcodeとか)をバージョンアップしてください
・ファイルサイズ・ビルド時間などを管理し公開
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスティフの日常
SWETの環境に生息中
⁃ 1日1回、現行バージョンの動作確認をする
• 現在の最新バージョンで動作確認
⁃ 監視対象がリリースされたら動作確認をする
• ビルドマシンに関係するもの(の例)
⁃ Xcode
• Xcode8.3.3がリリース → ビルドマシンに自動インストール
• 以降、Xcode8.3.3が動作確認で利用される
• アプリ自身が利用するもの(の例)
⁃ fastlane / gem
• 週1回以上のリリースがある(基本最新を使うのが良い)
⁃ Firebase / Pods
• ★4系になり名前が変更になり対応が必要になりました★
Copyright © DeNA Co.,Ltd. All Rights Reserved.
そんなマスティフの「WWDC2017」初日の出来事
iTunes Connectに新機能が追加
⁃ 定期実行でdeliverが動かないことが自動で判明
⁃ fastlaneの新バージョンがリリース(早い..)
⁃ 新バージョンでdeliverが動くことを自動で確認
私が出社する前に上記は全て終わっていました
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスティフとXcodeベータの生活(1/2)
おさらい / ベータ版の流れ
1. ベータ版はn回リリースされる
• (Info.plist内の)バージョン番号は変わらない
• BuildNumberが変わる
1. ある日、
• ベータ最終版のGM(Gold Master)版がリリースされる
1. 正式版が出る
• (基本)GM版と一緒
• BuildNumberが異なるときがある
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスティフとXcodeベータの生活(2/2)
マスティフにおけるベータ版のフロー(通常フローとは別で用意)
1. Xcodeベータの更新をBuildNumberの差異で検知
2. ビルドマシンにインストール
• 古いのは残さない
3. サンプルアプリを元に動作確認
• サンプルアプリは「既存」「新規対応」の2種類で確認
• 既存
• 新規機能を導入していない状態
• 新規対応
• 今回新たに追加・改良されたAPI(のうち一部)を導入
Copyright © DeNA Co.,Ltd. All Rights Reserved.
重点調査対象:テスト周り/CI周りの変化
(我々のアプリでは)特にテスト周り/CI周りの変化に注力しています
⁃ ベータ版での調査は上記がメインになります
アスティフで使っているアプリは以下の機能を有しています
⁃ UIテスト
• XCTest
⁃ ※新規・改修があった場合に対応する※
• EarlGrey
• Appium
⁃ CI周り
• ビルド → テスト → iTunesConnectへのデータ更新
⁃ fastlaneを元にチェック
※マスティフは他アプリで実行することも可能※