Flutterで継続配信(CD)のベストプラクティスに従って、アプリケーションがベータテスターに配信され、手動操作を必要とせずに定期的にテストされるようにします。
追い越し車線
このチュートリアルでは、オープンソースツールキットであるfastlaneを、 TravisやCirrusなどの既存のテストおよび継続的統合(CI)ワークフローに統合する方法を示します。
ローカルセットアップ
クラウドに移行する前に、ビルドと展開のプロセスをローカルでテストすることを強くお勧めします。ローカルマシンから継続的な展開を実装することもできます。
- fastlane:
gem install fastlane
brew 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/Appfile
AndroidManifest.xml
. - ,
[project]/ios/fastlane/Appfile
Info.plist
.apple_id
,itc_team_id
,team_id
.
- ,
- .
- Supply ,
fastlane supply init
Play Store . .json - . - ITunes Connect
Appfile
apple_id
.FASTLANE_PASSWORD
iTunes 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_PASSWORD
CI. - CI . Fastlane Match .
-
- Androidの場合:
- 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
.
-
- 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 appbundle
flutter build ios --release --no-codesign
, . cd android
cd ios
bundle exec fastlane [ lane]
. Cirrus Flutter.
, .
-