Flutter.dev: livraison continue avec Flutter

La traduction de l'article a été préparée à la veille du début du cours Flutter Mobile Developer .










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.



  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 .
    • Pour iOS, suivez le guide de déploiement bêta de Fastlane iOS . Toute modification peut être aussi simple que l'ajout lane, qui appelle build_ios_appavec export_method: 'app-store'et upload_to_testflight. Sur iOS, une version supplémentaire sera requise, car elle flutter buildconstruit .appplutôt que des archives .ipaspour la publication.


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



  1. 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.
  2. Exécutez le script Fastfile sur chaque plateforme.

    • cd android, alors fastlane [ lane].
    • cd ios, alors fastlane [ 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.



  1. Rendre les informations d'identification éphémères.

    • Sur Android:



      • Retirez le champ json_key_filede Appfileet stocker le contenu de la chaîne JSON dans une variable cryptée dans votre système de CI. Utilisez l'argument json_key_datain upload_to_play_storepour lire la variable d'environnement directement dans votre 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