Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,282 views

Published on

2018年3月19日に行われた
Android Test Night #3
で登壇した発表資料です。

Published in: Technology
  • Be the first to comment

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

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

×