TL;DR
- Stableブランチを利用するなら、StackはmacOSがおすすめ
- BetaブランチやDevブランチを利用するなら、
Flutter
Stepが利用可能 - AndroidのAABに
Flutter Build
Stepが対応していないので、Script
Stepでflutter build appbundle
を
BitriseのFlutterサポート
Flutter Meetup Tokyo #8
の飛び込みLTで、 @macs_6 さんがBitriseのFlutter stackについて触れていました。
はや4ヶ月が立ち、サポートがどうなっているんだろう……と思っていたところmacs_6さんから下記情報が。
今はMacOS stackにはstableのFlutterが最初から入ってました👀https://t.co/9jtU6YuVnF
— Hiroki Matsue (@macs_6) 2019年7月18日
そんなわけで、BitriseでFlutterのビルドを行う際のあれこれを書いておきます。
BitriseのFlutterスタック
自分が確認した限りでは、2019年4月13日のアップデートで Flutter 1.2.1 が入っているようです。
ブログポストには出てこないんですが、PRのPre-installed tool versions
に出てます。
Weekly VM update - 2019-04-12 by bitrisekristof · Pull Request #272 · bitrise-io/bitrise.io · GitHub
こちらが2019年7月20日に、Flutter 1.7.8+hotfix.3へ更新されています。
下記全てのStackで更新されているようなので、これまでに下記Stackを利用していた場合にはそのままPre-InstallのFlutter SDKを利用できるようになりました。
- Xcode stacks
- Visual Studio for Mac stacks
- Hybrid stacks
Android用のStackは対応がされていないので、FlutterでAndroidのみ対応する場合でもmacOS Stackを利用するのが良さそうです。 XcodeのStackにも、下記の通りAndroid SDKとNDKが入っています。 (Doc等には記載されていないのですが、Bitrise WorkflowからStackを開くと下記の記載があります。。。)
The latest available Xcode 10.2.x (including betas), Android SDK and NDK, Cordova, Ionic, Flutter and Ruby (to support React Native) installed on macOS 10.14 (Mojave).
実際にXCode 10.2系のsystem_reportsを見に行くと、Androidのツールが入っていることがわかります。
bitrise.io/osx-xcode-10.2.x.log at master · bitrise-io/bitrise.io · GitHub
Flutter SDKがPre-Installになると何が嬉しいのか
ビルドの実行時間が大幅に短縮されます!!! Bitriseの無料プランでは1回のビルドが10分以内であることが求められるので、この時間短縮は(僕にとって)非常に嬉しいものでした。
どれぐらい短縮されるかというと、自分の簡単なアプリで Flutter
Stepと Script
Stepを利用した場合には下記の通りの時間短縮です。
どちらもFlutter 1.7.8で flutter build appbundle
しています。
Flutter Step | Script Step |
---|---|
Stable以外のブランチを利用するには?
Flutter
Stepを利用することができます。
こちらは利用するFlutter SDKのバージョンを指定することができるので、自分の利用したいブランチを指定することができます。
諸事情がある場合には Flutter
Stepがおすすめです。
Android App Bundleを利用したい
Script
Stepで flutter build appbundle
をそのまま実行することができます。
上に例示したケースでは、下記のステップを作成しました。Bitrise ymlから該当箇所を抜き出します。
workflows: Android-release: steps: - activate-ssh-key: {} - git-clone: {} - script: inputs: - content: |- #!/usr/bin/env bash # fail if any commands fails set -e # debug log set -x # write your script here flutter build appbundle --release - sign-apk: inputs: - android_app: "$BITRISE_AAB_PATH" - apk_path: build/app/outputs/bundle/release/app.aab - google-play-deploy: inputs: - service_account_json_key_path: "$BITRISEIO_SERVICE_ACCOUNT_JSON_KEY_URL" - package_name: $PACKAGE_NAME - apk_path: "$BITRISE_SIGNED_APK_PATH"
というのも Flutter Build
StepがまだAndroid App Bundleに対応していないためです。
近いうちに対応されると思うので、その場合には Flutter Build
コマンドで対応できそうです。
(PRを作成しようと土日にやっていたのですが、終わりませんでした。。。ディアセンパイステージが面白すぎたから仕方ないのです。。。)
まとめ
Bitriseは各種対応が早くて便利だなーと思います。 個人開発のアプリも、またBitriseでCI回していきたいなー。