Slide 1

Slide 1 text

Flutterアプリ開発に於ける Bitrise活用例(初級) Yuma Tanaka Mobile Application Engineer at MTI Ltd. (VideoMarket Corp.)

Slide 2

Slide 2 text

2019/9/2 アプリリリース ● アプリ ○ videomarket(v4.0.0) ● サービス概要 ○ 動画配信サービス ○ AirPlay及びCast再生も可 ○ 会員登録不要 ○ In-App Purchase ● 備考 ○ Flutter製(iOS版のみ) ○ 「新規」でなく「更新」リリー ス https://beyond.videomarket.jp

Slide 3

Slide 3 text

Today’s topic ● Flutterアプリ開発でのBitrise活用例 ○ Bitrise workflows ○ Bitrise workflow:distribute_staging ○ Bitrise Step:Flutter ○ Build Configuration(iOS) ○ Tips(Cache Push) ● Summary

Slide 4

Slide 4 text

Bitrise workflows ● unit_test ○ PR作成時、自動的にテスト実行 ● distribute_mock ● distribute_dev ● distribute_staging ○ flavor:mock, dev, stagingでそれぞれビルド及び Fabric Beta配布 ○ PRマージ時、自動的に ”distribute_staging”実行 ● apple_upload_production ○ flavor:productionでビルド及びApp Store Connectアップロード

Slide 5

Slide 5 text

Bitrise workflows ● unit_test ○ PR作成時、自動的にテスト実行 ● distribute_mock ● distribute_dev ● distribute_staging ○ flavor:mock, dev, stagingでそれぞれビルド及び Fabric Beta配布 ○ PRマージ時、自動的に ”distribute_staging”実行 ● apple_upload_production ○ flavor:productionでビルド及びApp Store Connectアップロード

Slide 6

Slide 6 text

Bitrise workflow:distribute_staging ● 役割 ○ flavor:stagingでビルド及びFabric Beta配布 ● 大まかなフローの流れ ○ Git Clone ○ Step:Flutterでflutter build ○ fastlaneでios build ○ fastlaneでFabric Beta配布

Slide 7

Slide 7 text

Bitrise workflow:distribute_staging ● 役割 ○ flavor:stagingでビルド及びFabric Beta配布 ● 大まかなフローの流れ ○ Git Clone ○ Step:Flutterでflutter build ○ fastlaneでios build ○ fastlaneでFabric Beta配布

Slide 8

Slide 8 text

Bitrise Step:Flutter ● 概要 ○ 以前よりコミュニティで作成されていた Step ○ 2019年1月に公開された、Bitrise公式の 4Stepsとは別物(will try..) ● Input Variables 記入例 ○ Flutter Version(Required) ■ stable ○ Flutter commands to be executed(Required) ■ build ios --release --flavor staging --target lib/main_staging.dart

Slide 9

Slide 9 text

Bitrise Step:Flutter ● 概要 ○ 以前よりコミュニティで作成されていた Step ○ 2019年1月に公開された、Bitrise公式の 4Stepsとは別物(will try..) ● Input Variables 記入例 ○ Flutter Version(Required) ■ stable ○ Flutter commands to be executed(Required) ■ build ios --release --flavor staging --target lib/main_staging.dart

Slide 10

Slide 10 text

Build Configurations(iOS) flavor type Configuration main.dart Bitrise workflow mock debug Debug-mock main_mock.dart - mock release Release-mock main_mock.dart distribute_mock dev debug Debug-dev main_dev.dart - dev release Release-dev main_dev.dart distribute_dev staging debug Debug-staging main_staging.dart - staging release Release-staging main_staging.dart distribute_staging production debug Debug-production main_production.dart - production release Release-production main_production.dart apple_upload_production

Slide 11

Slide 11 text

Summary ● FlutterアプリのCI/CDをBitriseで実現可能 ● flavor毎にビルドを行う場合、 アプリ側でビルド構成の検討・導入が必要 ○ Flutterアプリ開発では、Android/iOSのネイティブの知識が必要

Slide 12

Slide 12 text

Tips(Cache Push) ● 課題 ○ Step:Flutterを使うと、毎回Flutter SDKがインストールされてしまう ○ 結果、ワークフローの実行時間が長くなる ● 解決方法 ○ Step:Cache Push(及びCache Pull)を導入し、 毎回Flutter SDKがインストールされるのを防ぐ → ※平均3,4分の実行時間を短縮 ○ Cache Push -> Cache pathsで下記指定 ■ /Users/vagrant/Library/flutter -> ./pubspec.lock

Slide 13

Slide 13 text

Summary ● FlutterアプリのCI/CDをBitriseで実現可能 ● flavor毎にビルドを行う場合、 アプリ側でビルド構成の検討・導入が必要 ○ Flutterアプリ開発では、Android/iOSのネイティブの知識が必要 ● Step:Cacheを導入する事により、ワークフローの実行時間を短縮可能

Slide 14

Slide 14 text

Reference ● Bitrise step:Flutter ○ https://github.com/DroidsOnRoids/bitrise-step-flutter ● Bitrise step:Cache Push ○ https://github.com/bitrise-steplib/steps-cache-push ● Flutter CI v1.0がBitriseに登場! ○ https://blog.bitrise.io/flutter-ci-v1-jp