Flutterで継続配信(CD)のベストプラクティスに従って、アプリケーションがベータテスターに配信され、手動操作を必要とせずに定期的にテストされるようにします。
追い越し車線
このチュートリアルでは、オープンソースツールキットであるfastlaneを、 TravisやCirrusなどの既存のテストおよび継続的統合(CI)ワークフローに統合する方法を示します。
ローカルセットアップ
クラウドに移行する前に、ビルドと展開のプロセスをローカルでテストすることを強くお勧めします。ローカルマシンから継続的な展開を実装することもできます。
- fastlane:
gem install fastlanebrew install fastlane. Fastlane. - Flutter , , ,
-
flutter build appbundle; -
flutter build ios --release --no-codesign.
-
- Fastlane .
-
fastlane init[project]/android. -
fastlane init[project]/ios.
-
- ,
Appfile.
- ,
package_name[project]/android/fastlane/AppfileAndroidManifest.xml. - ,
[project]/ios/fastlane/AppfileInfo.plist.apple_id,itc_team_id,team_id.
- ,
- .
- Supply ,
fastlane supply initPlay Store . .json - . - ITunes Connect
Appfileapple_id.FASTLANE_PASSWORDiTunes Connect. iTunes/TestFlight.
- Supply ,
- .
- Android : . .apk, « ». « » .aab/.apk, Play Store, Play Store.
- , . . Play Store.
- .
- gradle release,
android.buildTypes.release[project]/android/app/build.gradle.
- iOS, TestFlight App Store, , .
- Apple Developer Account.
-
[project]/ios/Runner.xcworkspace/.
- Android : . .apk, « ». « » .aab/.apk, Play Store, Play Store.
-
Fastfile.
- Android - Fastlane Android.
lane,upload_to_play_store.aab../build/app/outputs/bundle/release/app-release.aab, ,flutter build. - iOSの場合は、FastlaneiOSベータ展開ガイドに従ってください。すべての編集を加えるような単純なようすることができ
laneたの呼び出し、build_ios_appとexport_method: 'app-store'とupload_to_testflight。iOSでは、リリース用のアーカイブでflutter buildは.appなくビルドするため、追加のビルドが必要になります.ipas。
- Android - Fastlane Android.
これで、ローカルにデプロイするか、デプロイメントを継続的統合(CI)システムに移行する準備が整いました。
ローカル展開
- リリースモードでアプリケーションをビルドします。
-
flutter build appbundle..。 -
flutter build ios --release --no-codesign..。fastlaneがアーカイブ時に署名を行うため、今のところ署名する必要はありません。
-
- 各プラットフォームでFastfileスクリプトを実行します。
-
cd android、次にfastlane [ lane]。 -
cd ios、次にfastlane [ lane]。
-
ビルドとクラウド展開の構成
まず、Travisなどのクラウドシステムに移行する前に、ローカルセットアップセクションで説明されているローカルセットアップセクションの指示に従って、プロセスが正しく機能していることを確認します。
クラウドインスタンスは一時的で信頼性が低いため、PlayストアサービスアカウントのJSONやiTunes配布証明書などの資格情報をサーバーに残してはならないことに注意してください。Cirrusの
ようなContinuousIntegration(CI)システムは通常、プライベートデータを格納するための暗号化された環境変数をサポートします。
これらの変数の値をテストスクリプトのコンソールに出力しないように、すべての予防策を講じてください。これらの変数は、攻撃者がこれらのシークレットを盗むプルリクエストを作成できないように、マージされるまでプルリクエストで使用できないようにする必要があります。受け入れてマージするプルリクエストでこれらのシークレットを操作するときは注意してください。
- 資格情報を一時的にします。
- Androidの場合:
json_key_fileからフィールドを削除しAppfile、JSON文字列の内容をCIシステムの暗号化された変数に保存します。の引数json_key_dataを使用してupload_to_play_store、環境変数をに直接読み込みますFastfile。- (, base64) . CI
-
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > /home/cirrus/[directory # , gradle].keystore
- iOS:
-
FASTLANE_PASSWORDCI. - CI . Fastlane Match .
-
- Androidの場合:
- Gemfile
gem install fastlaneCI, fastlane . .
-
[project]/android[project]/iosGemfile, : -
source "https://rubygems.org" gem "fastlane" -
bundle updateGemfile.Gemfile.lock. -
bundle exec fastlanefastlane.
-
- CI,
.travis.yml.cirrus.yml, .
- Linux macOS.
- Xcode macOS (, o
sx_image: xcode9.2). - . Fastlane CI CI.
- , , , :
- Bundler
gem install bundler. - Android , Android SDK
ANDROID_SDK_ROOT. -
bundle install[project]/android[project]/ios. - , Flutter SDK
PATH.
- Bundler
- CI:
-
flutter build appbundleflutter build ios --release --no-codesign, . cd androidcd iosbundle exec fastlane [ lane]
. Cirrus Flutter.
, .
-