SlideShare uma empresa Scribd logo
1 de 48
Visual Studio App Center
で始めるCI/CD
2018/03/19
Android Test Night #3
なかしょ(中島進也)
Profile
• 名前:なかしょ(中島 進也)
• Twitter:@nakasho_dev
• ブログ:なかしょの技術日誌
http://nakasho-dev.hatenablog.jp/
• 最近の興味
TDD、アジャイル開発、Xamarin、Chatbot、Tizen
• 主な参加コミュニティ
JXUG、.NETラボ、Cogbot
※本資料は私個人の意見であり、所属企業・部門見解を代表するもの
ではありません。
2
なぜ、CI/CD環境が必要か(1/4)
• 対象機種の全OS、画面サイズのパターンをデベロッパーのマ
シンでテストしていたら実装にかける時間が失われる。
3
・2.3.3
・4.0
・4.0.3
・4.1
・4.2
・4.3
・4.4
・5.0
・5.1
・6.0
・7.0
・7.1
・8.0
・8.1
・2.45インチ
・4.6インチ
・5.2インチ
・6.0インチ
×
なぜ、CI/CD環境が必要か(2/4)
• 対象機種の全OS、画面サイズのパターンのテストをCI/CD
サーバに任せることで、実装に専念できる。
4
CI/CD
サーバ
単体テストが一つの
環境で全てパスした
らPush
α版、β版、プロ
ダクト版に応じて
なぜ、CI/CD環境が必要か(3/4)
• 取得したソースが同じでもビルド環境が異なればビルドが失
敗することや実機で正しく動作しないことがある
5
デベロッパー1環境
・ライブラリA 1.0.2
・ライブラリB 2.2.5
デベロッパー2環境
・ライブラリA 1.2.2
・ライブラリB 2.1.5
ビルド環境
のスノー
フレーク化
なぜ、CI/CD環境が必要か(4/4)
• 各デベロッパーの環境ではなく、CI/CDサーバでのテスト成
功を確認して、対象機能の実装完了とする。
6
デベロッパー1環境
デベロッパー2環境
CI/CD
サーバ
リポジトリが更新さ
れたらソースを取得
必要なテストを全て
パスしたらαリリー
ス
常に同じ環境でビル
ド・テスト
CI/CD環境の構築例(オンプレミス)
7
Git
リポジトリ
Ubuntu サーバ
TeamCity Server
Build Agent2
Build Agent3
Mac mini
TeamCity
Build Agent1
iPhone
Android
検証サーバ
商用サーバ
CIモニタ
CI/CD環境をオンプレミスで構築すると
• CI/CD環境の
ハードウェア費用
ソフトウェア費用
監視費用
維持メンテ費用
テスト端末費用
8
CI/CDの運用方法によっては、オ
ンプレミスよりもクラウドサービ
スを利用したほうがコストも安く、
開発者にも負担がかからない環境
が作れるのではないか。
9
Visual Studio App Center
主な機能
10
自動ビルド・単体テスト
実機デバイスでUIテストを自動化
テスターやストアへのアプリ配布
クラッシュログの収集
使用状況の分析
プッシュ通知
対応プラットフォーム
11
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
12https://appcenter.ms/create-account
13
対応リポジトリ
14
Build – ビルド設定(1/2)
• Android Module
• Build Variant
• Build Script
 固定名のファイルを含めることで有効と
なる
• Build frequency
 Pushごとにビルドするか否か
• Automatically increment build number
 ビルドごとにビルド番号を増加させるか否か
• Run unit tests
 ビルド時に単体テストをおこなうか否か
• Lint source code
 コードの静的解析(Lint)をおこなうか否か
15https://docs.microsoft.com/ja-jp/appcenter/build/android/first-build
Build – ビルド設定(2/2)
• Environment variables
 環境変数を設定しビルドに反映できる
 リポジトリに含められないものはここ
で管理すべき
• Sign builds
 ビルド時に署名を付与するか否か
• Test on a real device
 実機テストを実施するか否か
• Distribute builds
 ビルドを配信するか否か
• Advanced
 ビルドステータスバッジの有無
16https://docs.microsoft.com/ja-jp/appcenter/build/android/first-build
Build – Sign builds 署名設定
• Gradle内で署名はできるが、こ
こで署名をした方がセキュア
17https://docs.microsoft.com/ja-jp/appcenter/build/android/code-signing
Build – ビルド状態表示
18https://docs.microsoft.com/ja-jp/appcenter/build/android/
• 設定後、ビルドを走らせると以下のようにビルド状態を表示
Downloadボタンから以下
がダウンロード可能
・Build
・logs
19
Test – 端末の選択
• 機種×OSで数千台の
実機デバイスが用意さ
れている。
• いわゆるガラパゴスス
マフォは用意されてい
ない。
20https://docs.microsoft.com/ja-jp/appcenter/test-cloud/core-concepts
Test – 設定
• Test Framework
 Appium
 Calabash
 Espresso
 Xamarin.UITest
21https://docs.microsoft.com/ja-jp/appcenter/test-cloud/supported-frameworks
Test – 結果
22
Test – 結果
• DEVICE LOGS
• TEST LOGS
• STACK TRACE
23
24
Distribute
• Androidの配信方法は3つ
グループ配信
App Centerによる配信
登録したユーザにメールで通知
未登録のユーザにも配布できるリンクが作成可能
GooglePlayによる配信
API接続用のセキュリティトークンが必要
α、βテスト用の配信
Production用の配信
Intune Company Portal用の配信
IntuneはMicrosoftが提供するエンタープライズ モビリ
ティ管理 (EMM)サービス
25https://docs.microsoft.com/ja-jp/appcenter/distribution/
Distribute – Group配信
26https://docs.microsoft.com/ja-jp/appcenter/distribution/
ここを選択して登録して
いるリポジトリを表示
apkファイルを
アップロード
だけど...
ビルド対象のブラン
チを選択
過去5回までの成功
したビルドのいずれ
かを選択
リリースノートの
記入
配信対象のグループ
を選択
確認して「Distribute」
ストア配信ではAPKファ
イルのアップロードのみ
Distribute – Group配信
27https://docs.microsoft.com/ja-jp/appcenter/distribution/
届いたメールの
Accept Invitaionを
クリック
Downloadをクリッ
ク
警告が出てもOK この警告が出た際は
セキュリティの設定
を変更して再度イン
ストール
アプリ
起動
28
Diagnostics – クラッシュ情報取得
29https://docs.microsoft.com/ja-jp/appcenter/crashes/android
スタックトレース
を閲覧可能
レポートを取得可能
クラッシュ情報が
AppCenterに送信され
るのはアプリ再起動後
30
Analytics - Overview
• Active Users
Monthly、Weekly、Daily
• Engagement
• Devices and OS
• Countries and Languages
• Active Users per Version
31https://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
32https://docs.microsoft.com/ja-jp/appcenter/analytics/event-metrics
Analytics – Log Flow
33https://docs.microsoft.com/ja-jp/appcenter/analytics/log-flow
Analytics – Export
• Azure の以下の機能にExport可能
Blob Storage
Application Insights
34https://docs.microsoft.com/ja-jp/appcenter/analytics/export
Analytics – Application Insights
35https://docs.microsoft.com/ja-jp/azure/application-insights/app-insights-usage-flows
36
Push – 通知情報を登録
37
https://docs.microsoft.com/ja-jp/appcenter/push/
管理用のキャンペー
ン名を登録
サイレントPushにす
るか否か
タイトルとメッセー
ジを入力
アプリ側に渡すデー
タを登録
以下の3つから通知対象を選
択
・すべての登録デバイス
・デバイスリストから選択
・オーディエンス
Push – オーディエンスについて
• オーディエンスは以下の属性から選択可能
App Version
Country
MobileCarrier
Language
DeviceModel
OEM
Device OS Version
Screen Size
38https://docs.microsoft.com/ja-jp/appcenter/push/
App Versionはアプリの
バージョンアップ時に、
旧バージョンを使っている
ユーザへアップデートを促
す際に非常に有効
Push – 送信
• 各画面で登録した情報が表示
• 確認して「Send notification」
をクリック
39https://docs.microsoft.com/ja-jp/appcenter/push/
Push – 履歴一覧
• 送信状況が一覧で確認できる
40https://docs.microsoft.com/ja-jp/appcenter/push/
その他
41
その他 – Bug Tracker Integration
• 以下のTrackerと連携し、Crash時に自動でTicketを起票
Visual Studio Team Services
GitHub
Jira
42https://docs.microsoft.com/ja-jp/appcenter/dashboard/bugtracker/
その他 – Webhook
• 以下のTriggerに対してWebHookが可能
New crash group is created
New app version is available
43https://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
44https://docs.microsoft.com/ja-jp/appcenter/dashboard/slack/
その他 – App Center Client (Preview)
45https://openapi.appcenter.ms/
Infrastructure
as Codeを
実現
46http://www.itmedia.co.jp/pcuser/articles/1801/17/news001_2.html
参考サイト
• 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
47
ご清聴ありがとうございました。
なかしょ(中島 進也)
@nakasho_dev
48

Mais conteúdo relacionado

Mais procurados

第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
Kaoru NAKAMURA
 

Mais procurados (20)

Visual Studio App CenterでGitHubのPull Requestを効率よく対応しよう
Visual Studio App CenterでGitHubのPull Requestを効率よく対応しようVisual Studio App CenterでGitHubのPull Requestを効率よく対応しよう
Visual Studio App CenterでGitHubのPull Requestを効率よく対応しよう
 
GitHub ActionsでiOSのCIを実現しよう
GitHub ActionsでiOSのCIを実現しようGitHub ActionsでiOSのCIを実現しよう
GitHub ActionsでiOSのCIを実現しよう
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そう
 
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
Visual Studio App CenterでGitHubのIssue発行を自動化しようVisual Studio App CenterでGitHubのIssue発行を自動化しよう
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
 
What is tested by pre-launch (security) reports?
What is tested by pre-launch (security) reports?What is tested by pre-launch (security) reports?
What is tested by pre-launch (security) reports?
 
AzureDevOpsで始めるAndroidのCI/CD
AzureDevOpsで始めるAndroidのCI/CDAzureDevOpsで始めるAndroidのCI/CD
AzureDevOpsで始めるAndroidのCI/CD
 
社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう
 
はてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテストはてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテスト
 
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
 
新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ
 
.NET の今 ~ 最新アップデートと 2019 年の展望
.NET の今 ~ 最新アップデートと 2019 年の展望.NET の今 ~ 最新アップデートと 2019 年の展望
.NET の今 ~ 最新アップデートと 2019 年の展望
 
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 
Jenkins導入ライブ
Jenkins導入ライブJenkins導入ライブ
Jenkins導入ライブ
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
VRの入力デバイス #JAGVR
VRの入力デバイス #JAGVRVRの入力デバイス #JAGVR
VRの入力デバイス #JAGVR
 
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
 

Semelhante a Visual Studio App Centerで始めるCI/CD(Android)

RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナーRICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
contest-theta360
 

Semelhante a Visual Studio App Centerで始めるCI/CD(Android) (20)

Visual Studio App CenterでAndroid開発にCI/CDを導入しよう
Visual Studio App CenterでAndroid開発にCI/CDを導入しようVisual Studio App CenterでAndroid開発にCI/CDを導入しよう
Visual Studio App CenterでAndroid開発にCI/CDを導入しよう
 
Visual Studio App Centerで始めるCI/CD
Visual Studio App Centerで始めるCI/CDVisual Studio App Centerで始めるCI/CD
Visual Studio App Centerで始めるCI/CD
 
Implementation Approach of Artifical Intelligence
Implementation Approach of Artifical IntelligenceImplementation Approach of Artifical Intelligence
Implementation Approach of Artifical Intelligence
 
Logic Apps/Flow Update Summary
Logic Apps/Flow Update SummaryLogic Apps/Flow Update Summary
Logic Apps/Flow Update Summary
 
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
 
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
 
サーバーレスで作る スマホアプリバックエンド
サーバーレスで作るスマホアプリバックエンドサーバーレスで作るスマホアプリバックエンド
サーバーレスで作る スマホアプリバックエンド
 
Azure の App Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析するAzure の App Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析する
 
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
 
使い倒そう Visual Studio Code!!! ~ここからはじめる基本のキ~
使い倒そうVisual Studio Code!!! ~ここからはじめる基本のキ~使い倒そうVisual Studio Code!!! ~ここからはじめる基本のキ~
使い倒そう Visual Studio Code!!! ~ここからはじめる基本のキ~
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Microsoft MVP を受賞するために取り組んだこと
Microsoft MVP を受賞するために取り組んだことMicrosoft MVP を受賞するために取り組んだこと
Microsoft MVP を受賞するために取り組んだこと
 
Azure のApp Center でアプリの 使用状況を分析する
Azure のApp Center でアプリの 使用状況を分析するAzure のApp Center でアプリの 使用状況を分析する
Azure のApp Center でアプリの 使用状況を分析する
 
Intelligent cloud with Microsoft Graph.
Intelligent cloud with Microsoft Graph.Intelligent cloud with Microsoft Graph.
Intelligent cloud with Microsoft Graph.
 
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
 
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しようAzure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
 
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナーRICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
RICOH THETA x IoT デベロッパーズ コンテスト 第2回クラウドAPIセミナー
 
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
Developer's Summit 夏 EnterpriseTED 資料
Developer's Summit 夏 EnterpriseTED 資料Developer's Summit 夏 EnterpriseTED 資料
Developer's Summit 夏 EnterpriseTED 資料
 

Mais de Shinya Nakajima

Mais de Shinya Nakajima (17)

2画面折り畳みデバイスのアプリ開発について
2画面折り畳みデバイスのアプリ開発について2画面折り畳みデバイスのアプリ開発について
2画面折り畳みデバイスのアプリ開発について
 
ペアワークで持続的に成長するチームになろう!
ペアワークで持続的に成長するチームになろう!ペアワークで持続的に成長するチームになろう!
ペアワークで持続的に成長するチームになろう!
 
Adaptive Cardsを使ってみた
Adaptive Cardsを使ってみたAdaptive Cardsを使ってみた
Adaptive Cardsを使ってみた
 
すごろくゲームでPlayFabの活用を検討
すごろくゲームでPlayFabの活用を検討すごろくゲームでPlayFabの活用を検討
すごろくゲームでPlayFabの活用を検討
 
PlayFabとCognitiveを 連携させて健全なゲーム運営を
PlayFabとCognitiveを連携させて健全なゲーム運営をPlayFabとCognitiveを連携させて健全なゲーム運営を
PlayFabとCognitiveを 連携させて健全なゲーム運営を
 
PlayFabとAppCenterのユーザ情報を連携してAppCenterの機能を活用しよう
PlayFabとAppCenterのユーザ情報を連携してAppCenterの機能を活用しようPlayFabとAppCenterのユーザ情報を連携してAppCenterの機能を活用しよう
PlayFabとAppCenterのユーザ情報を連携してAppCenterの機能を活用しよう
 
ペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おうペアプロするならgit-duetを使おう
ペアプロするならgit-duetを使おう
 
CI/CD専用モニタと心理的安全性
CI/CD専用モニタと心理的安全性CI/CD専用モニタと心理的安全性
CI/CD専用モニタと心理的安全性
 
アジャイル開発を円滑に進めるVisual Studio App Center
アジャイル開発を円滑に進めるVisual Studio App Centerアジャイル開発を円滑に進めるVisual Studio App Center
アジャイル開発を円滑に進めるVisual Studio App Center
 
アジャイル開発のストーリーをGherkin記法で作成
アジャイル開発のストーリーをGherkin記法で作成アジャイル開発のストーリーをGherkin記法で作成
アジャイル開発のストーリーをGherkin記法で作成
 
docomo Developer Supportを活用しよう
docomo Developer Supportを活用しようdocomo Developer Supportを活用しよう
docomo Developer Supportを活用しよう
 
Xamarinで地図を使おう
Xamarinで地図を使おうXamarinで地図を使おう
Xamarinで地図を使おう
 
いつか言いたい『こんなこともあろうかと』
いつか言いたい『こんなこともあろうかと』いつか言いたい『こんなこともあろうかと』
いつか言いたい『こんなこともあろうかと』
 
今こそ Microsft Bot Framework を学ぼう
今こそ Microsft Bot Framework を学ぼう今こそ Microsft Bot Framework を学ぼう
今こそ Microsft Bot Framework を学ぼう
 
Tizenの.NET対応について
Tizenの.NET対応についてTizenの.NET対応について
Tizenの.NET対応について
 
Visual Studio Live Shareでリモートペアプログラミング
Visual Studio Live ShareでリモートペアプログラミングVisual Studio Live Shareでリモートペアプログラミング
Visual Studio Live Shareでリモートペアプログラミング
 
リーンアジャイルで開発を加速しよう
リーンアジャイルで開発を加速しようリーンアジャイルで開発を加速しよう
リーンアジャイルで開発を加速しよう
 

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