Visual Studio App Center
で始めるCI/CD
2018/03/26
iOS Test Night #7
なかしょ(中島進也)
Profile
• 名前:なかしょ(中島 進也)
• Twitter:@nakasho_dev
• ブログ:なかしょの技術日誌
http://nakasho-dev.hatenablog.jp/
• 最近の興味
TDD、アジャイル開発、Xamarin、Chatbot、Tizen
• 主な参加コミュニティ
JXUG、.NETラボ、Cogbot、Teratail
※本資料は私個人の意見であり、所属企業・部門見解を代表するもの
ではありません。
2
CI/CD環境の構築例(オンプレミス)
3
Git
リポジトリ
Ubuntu サーバ
TeamCity Server
Build Agent2
Build Agent3
Mac mini
TeamCity
Build Agent1
iPhone
Android
検証サーバ
商用サーバ
CIモニタ
CI/CD環境をオンプレミスで構築すると
• CI/CD環境の
ハードウェア費用
ソフトウェア費用
監視費用
維持メンテ費用
テスト端末費用
4
CI/CDの運用方法によっては、オ
ンプレミスよりもクラウドサービ
スを利用したほうがコストも安く、
開発者にも負担がかからない環境
が作れるのではないか。
5
Visual Studio App Center
主な機能
6
自動ビルド・単体テスト
実機デバイスでUIテストを自動化
テスターやストアへのアプリ配布
クラッシュログの収集
使用状況の分析
プッシュ通知
7http://www.itmedia.co.jp/pcuser/articles/1801/17/news001_2.html
対応プラットフォーム
8
Android
Java/Kotlin
ReactNative
Cordova(Preview)
Xamarin
iOS
Objective-C/Swift
ReactNative
Cordova(Preview)
Xamarin
Windows
UWP
macOS(Preview)
Objective-C/Swift
対応アカウント
• 以下のアカウントが使用可能
GitHub
Microsoft
Facebook
Google
9https://appcenter.ms/create-account
10
対応リポジトリ
11
Build – ビルド設定(1/2)
• Project/Workspace
• Shared Scheme
• XCode version
• Build Script
• 固定名のファイルを含めることで有効となる
• Build frequency
• Pushごとにビルドするか否か
• Automatically increment build number
• ビルドごとにビルド番号を増加させるか否か
• Run XCTest tests
• ビルド時にXCTestをおこなうか否か
12https://docs.microsoft.com/ja-jp/appcenter/build/ios/first-build
Build – ビルド設定(2/2)
• Environment variables
• 環境変数を設定しビルドに反映できる
• リポジトリに含められないものはここで管
理すべき
• Sign builds
• ビルド時に署名を付与するか否か
• Test on a real device
• 実機テストを実施するか否か
• Distribute builds
• ビルドを配信するか否か
• Advanced
• ビルドステータスバッジの有無
13https://docs.microsoft.com/ja-jp/appcenter/build/ios/first-build
Build – Sign builds 署名設定
• プロビジョニングプロファイルとp12ファイルを登録することで
証明書の署名が可能となる
14https://docs.microsoft.com/ja-jp/appcenter/build/ios/code-signing
プロビジョニングプロファイルやp12ファ
イルが正常でないと以下のような警告が出
て登録できない
Build – ビルド状態表示
15https://docs.microsoft.com/en-us/appcenter/quickstarts/ios/build
• 設定後、ビルドを走らせると以下のようにビルド状態を表示
Downloadボタンから以下
がダウンロード可能
・Build(IPA)
・Symbols(dSYM)
・logs
16
Test – 端末の選択
• 機種×OSで実機デバ
イスが用意されてい
る以下を選択
• OSのバージョン等で
絞り込みも可能
• 2018年3月25日時点
で対応している最低
バージョンは8.0.2
17https://docs.microsoft.com/ja-jp/appcenter/test-cloud/core-concepts
Test – 設定
• Test Framework
 Appium
 Calabash
 XCUITest
 Xamarin.UITest
18https://docs.microsoft.com/ja-jp/appcenter/test-cloud/supported-frameworks
Test – 結果
19
Test – テスト結果詳細
20https://docs.microsoft.com/en-us/appcenter/quickstarts/ios/test
端末情報の詳細が表示
ログ詳細が表示
21
Distribute
• iOSの配信方法は3つ
グループ配信
App Centerによる配信
Ad-Hoc証明書が必要
登録したユーザにメールで通知
未登録のユーザにも配布できるリンクが作成可能
iTunesConnectによる配信
Production証明書が必要
TestFlight用の配信
AppStore用の配信
Intune Company Portal用の配信
IntuneはMicrosoftが提供するエンタープライズ モビリ
ティ管理 (EMM)サービス
22https://docs.microsoft.com/ja-jp/appcenter/distribution/
Distribute-再署名
• AppCenterからUDIDの登
録が可能
• 登録したUDIDが含まれる
プロビジョニングプロファ
イルで再署名されたアプリ
を配布できる
• Roadmapには「Automatic
iOS device provisioning」
とある
23
https://docs.microsoft.com/ja-jp/appcenter/distribution/auto-provisioning
https://docs.microsoft.com/ja-jp/appcenter/general/roadmap
Distribute – Group配信
24https://docs.microsoft.com/ja-jp/appcenter/distribution/groups
ここを選択して登録して
いるリポジトリを表示
Ipaファイルを
アップロード
だけど...
ビルド対象のブラン
チを選択
過去5回までの成功
したビルドのいずれ
かを選択
リリースノートの
記入
ビルド対象のブラン
チを選択 確認して「Distribute」
Distribute – ストア配信
25https://docs.microsoft.com/ja-jp/appcenter/distribution/stores/apple
IPAファイルのアッ
プロード
アップロード内容を確
認
リリースノートを記述 確認してPublish
26
Diagnostics – クラッシュ情報取得
27https://docs.microsoft.com/ja-jp/appcenter/crashes/android
スタックトレース
を閲覧可能
レポートを取得可能
クラッシュ情報が
AppCenterに送信される
のはアプリ再起動後
Macで作成したdSYM
パッケージ用のZIPファ
イルを事前にアップロー
ドする必要がある
28
Analytics - Overview
• Active Users
Monthly、Weekly、Daily
• Engagement
• Devices and OS
• Countries and Languages
• Active Users per Version
29https://docs.microsoft.com/ja-jp/appcenter/analytics/overview
Analytics – Custom Events
• Event Page
Count、Trend、Users、User change、Per user
• Detail event view
Users、Count、Count per user、Count per session
30https://docs.microsoft.com/ja-jp/appcenter/analytics/event-metrics
Analytics – Log Flow
31https://docs.microsoft.com/ja-jp/appcenter/analytics/log-flow
Analytics – Export
• Azure の以下の機能にExport可能
Blob Storage
Application Insights
32https://docs.microsoft.com/ja-jp/appcenter/analytics/export
Analytics – Application Insights
33https://docs.microsoft.com/ja-jp/azure/application-insights/app-insights-usage-flows
34
Push – 認証情報を登録
35
https://docs.microsoft.com/en-us/appcenter/quickstarts/ios/push
Key IDを登録
PrefixとIDを登録
Keyファイルにある
Tokenを登録
Push – 通知情報を登録
36
https://docs.microsoft.com/ja-jp/appcenter/push/
管理用のキャンペー
ン名を登録
サイレントPushにす
るか否か
タイトルとメッセー
ジを入力
アプリ側に渡すデー
タを登録
以下の3つから通知対象を選
択
・すべての登録デバイス
・デバイスリストから選択
・オーディエンス
Push – オーディエンスについて
• オーディエンスは以下の属性から選択可能
App Version
Country
MobileCarrier
Language
DeviceModel
OEM
Device OS Version
Screen Size
37https://docs.microsoft.com/ja-jp/appcenter/push/
App Versionはアプリの
バージョンアップ時に、
旧バージョンを使っている
ユーザへアップデートを促
す際に非常に有効
Push – 送信
• 各画面で登録した情報が表示
• 確認して「Send notification」
をクリック
38https://docs.microsoft.com/ja-jp/appcenter/push/
Push – 履歴一覧
• 送信状況が一覧で確認できる
39https://docs.microsoft.com/ja-jp/appcenter/push/
その他
40
その他 – Bug Tracker Integration
• 以下のTrackerと連携し、Crash時に自動でTicketを起票
Visual Studio Team Services
GitHub
Jira
41https://docs.microsoft.com/ja-jp/appcenter/dashboard/bugtracker/
その他 – Webhook
• 以下のTriggerに対してWebHookが可能
New crash group is created
New app version is available
42https://docs.microsoft.com/ja-jp/appcenter/dashboard/webhooks/
その他 – Slack App
• Slack App として以下の機能が用意されている
/appcenter login : One time setup, allowing App Center
access via Slack
/appcenter logout : Clean up authorization info
/appcenter build : Trigger a new app build
/appcenter analytics : View Analytics information
/appcenter invite : Invite a new app tester
/appcenter crashes : View Crash information
/appcenter help : View all App Center commands
43https://docs.microsoft.com/ja-jp/appcenter/dashboard/slack/
その他 – App Center Client (Preview)
44https://openapi.appcenter.ms/
Infrastructure
as Codeを
実現
参考サイト
• Visual Studio App Center Docs
https://docs.microsoft.com/ja-jp/appcenter/
• Visual Studio App Center Blog
https://blogs.msdn.microsoft.com/vsappcenter/
• Advice and Answers App Center
https://intercom.help/appcenter/
• JXUGC #24 春の App Center 祭り
https://jxug.connpass.com/event/72491/
• 最新ツールとVisual Studioサブスクリプションで変わ
る開発環境
http://www.itmedia.co.jp/pcuser/articles/1801/17/news00
1.html
45
ご清聴ありがとうございました。
なかしょ(中島 進也)
@nakasho_dev
46

Visual Studio App Centerで始めるCI/CD(iOS)