Flutter.dev:Flutterによる継続的な配信

記事の翻訳は、Flutter MobileDeveloperコースの開始前夜に作成されました










Flutterで継続配信(CD)のベストプラクティスに従って、アプリケーションがベータテスターに​​配信され、手動操作を必要とせずに定期的にテストされるようにします。



追い越し車線



このチュートリアルでは、オープンソースツールキットあるfastlaneを、 TravisやCirrusなどの既存のテストおよび継続的統合(CI)ワークフローに統合する方法を示します



ローカルセットアップ



クラウドに移行する前に、ビルドと展開のプロセスをローカルでテストすることを強くお勧めします。ローカルマシンから継続的な展開を実装することもできます。



  1. fastlane: gem install fastlane brew install fastlane. Fastlane.
  2. Flutter , , ,

    • flutter build appbundle;
    • flutter build ios --release --no-codesign.
  3. Fastlane .

    • fastlane init [project]/android.
    • fastlane init [project]/ios.
  4. , Appfile .

    • , package_name [project]/android/fastlane/Appfile AndroidManifest.xml.
    • , [project]/ios/fastlane/Appfile Info.plist. apple_id, itc_team_id, team_id .
  5. .

    • Supply , fastlane supply init Play Store . .json - .
    • ITunes Connect Appfile apple_id. FASTLANE_PASSWORD iTunes Connect. iTunes/TestFlight.
  6. .

    • Android : . .apk, « ». « » .aab/.apk, Play Store, Play Store.

      • , . . Play Store.
      • .
      • gradle release, android.buildTypes.release [project]/android/app/build.gradle.
    • iOS, TestFlight App Store, , .



  7. 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_appexport_method: 'app-store'upload_to_testflightiOSでは、リリース用のアーカイブflutter build.appなくビルドするため、追加のビルドが必要になります.ipas


これで、ローカルにデプロイするか、デプロイメントを継続的統合(CI)システムに移行する準備が整いました。



ローカル展開



  1. リリースモードでアプリケーションをビルドします。

    • flutter build appbundle..。
    • flutter build ios --release --no-codesign..。fastlaneがアーカイブ時に署名を行うため、今のところ署名する必要はありません。
  2. 各プラットフォームでFastfileスクリプトを実行します。

    • cd android、次にfastlane [ lane]
    • cd ios、次にfastlane [ lane]




ビルドとクラウド展開の構成



まず、Travisなどのクラウドシステムに移行する前に、ローカルセットアップセクションで説明されているローカルセットアップセクションの指示に従って、プロセスが正しく機能していることを確認します。



クラウドインスタンスは一時的で信頼性が低いため、PlayストアサービスアカウントのJSONやiTunes配布証明書などの資格情報をサーバーに残してはならないことに注意してください。Cirrusの



ようなContinuousIntegration(CI)システムは通常、プライベートデータを格納するための暗号化された環境変数をサポートします。



これらの変数の値をテストスクリプトのコンソールに出力しないように、すべての予防策を講じてください。これらの変数は、攻撃者がこれらのシークレットを盗むプルリクエストを作成できないように、マージされるまでプルリクエストで使用できないようにする必要があります。受け入れてマージするプルリクエストでこれらのシークレットを操作するときは注意してください。



  1. 資格情報を一時的にします。

    • 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_PASSWORD CI.
      • CI . Fastlane Match .
  2. Gemfile gem install fastlane CI, fastlane . .



    • [project]/android [project]/ios Gemfile, :
    • source "https://rubygems.org"
      	 gem "fastlane"
    • bundle update Gemfile. Gemfile.lock .
    • bundle exec fastlane fastlane.
  3. CI, .travis.yml .cirrus.yml, .



    • Linux macOS.
    • Xcode macOS (, osx_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.
    • CI:



      • flutter build appbundle flutter build ios --release --no-codesign, .
      • cd android cd ios
      • bundle exec fastlane [ lane]






      . Cirrus Flutter.





      , .








All Articles