Suivez les meilleures pratiques de livraison continue (CD) avec Flutter pour vous assurer que votre application est livrée à vos bêta-testeurs et testée régulièrement sans avoir besoin de manipulation manuelle.
voie rapide
Ce didacticiel vous montre comment intégrer fastlane, une boîte à outils open source, dans des flux de travail de test et d'intégration continue (CI) existants tels que Travis ou Cirrus.
Configuration locale Il est
fortement recommandé de tester le processus de construction et de déploiement localement avant de passer au cloud. Vous pouvez également implémenter un déploiement continu à partir de votre machine locale.
- 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
. - Pour iOS, suivez le guide de déploiement bêta de Fastlane iOS . Toute modification peut être aussi simple que l'ajout
lane
, qui appellebuild_ios_app
avecexport_method: 'app-store'
etupload_to_testflight
. Sur iOS, une version supplémentaire sera requise, car elleflutter build
construit.app
plutôt que des archives.ipas
pour la publication.
- Android - Fastlane Android.
Vous êtes maintenant prêt à déployer localement ou à migrer votre déploiement vers un système d'intégration continue (CI).
Déploiement local
- Créez votre application en mode version.
-
flutter build appbundle
... -
flutter build ios --release --no-codesign
... Il n'est pas nécessaire de signer pour l'instant, car Fastlane effectuera la signature lors de l'archivage.
-
- Exécutez le script Fastfile sur chaque plateforme.
-
cd android
, alorsfastlane [ lane]
. -
cd ios
, alorsfastlane [ lane]
.
-
Configuration de la build et du déploiement dans le cloud
Tout d'abord, suivez les instructions de la section de configuration locale décrite dans la section de configuration locale pour vous assurer que le processus fonctionne correctement avant de passer à un système cloud comme Travis.
La principale chose à noter est que, les instances cloud étant éphémères et peu fiables, vous ne devez pas laisser vos informations d'identification, telles que le JSON du compte de service Play Store ou le certificat de distribution iTunes, sur le serveur.
Les systèmes d'intégration continue (CI) tels que Cirrus prennent généralement en charge des variables d'environnement chiffrées pour stocker des données privées.
Prenez toutes les précautions nécessaires pour ne pas imprimer les valeurs de ces variables sur la console dans vos scripts de test. Ces variables ne doivent pas non plus être disponibles dans les demandes d'extraction tant qu'elles ne sont pas fusionnées afin que les attaquants ne puissent pas créer une demande d'extraction qui volera ces secrets. Soyez prudent lorsque vous interagissez avec ces secrets dans les demandes d'extraction que vous acceptez et fusionnez.
- Rendre les informations d'identification éphémères.
- Sur Android:
- Retirez le champ
json_key_file
deAppfile
et stocker le contenu de la chaîne JSON dans une variable cryptée dans votre système de CI. Utilisez l'argumentjson_key_data
inupload_to_play_store
pour lire la variable d'environnement directement dans votreFastfile
. - (, base64) . CI
-
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > /home/cirrus/[directory # , gradle].keystore
- Retirez le champ
- iOS:
-
FASTLANE_PASSWORD
CI. - CI . Fastlane Match .
-
- Sur 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.
, .
-