Flutter.dev: Kontinuierliche Lieferung mit Flutter

Die Übersetzung des Artikels wurde im Vorfeld des Starts des Flutter Mobile Developer- Kurses erstellt .










Befolgen Sie mit Flutter die Best Practices für die kontinuierliche Bereitstellung (CD), um sicherzustellen, dass Ihre Anwendung an Ihre Betatester geliefert und regelmäßig getestet wird, ohne dass manuelle Manipulationen erforderlich sind.



Überholspur



Dieses Tutorial zeigt Ihnen, wie Sie Fastlane (ein Open Source-Toolkit) in vorhandene Test- und Continuous Integration (CI) -Workflows wie Travis oder Cirrus integrieren.



Lokale Einrichtung Es wird



dringend empfohlen, den Erstellungs- und Bereitstellungsprozess lokal zu testen, bevor Sie in die Cloud wechseln. Sie können die kontinuierliche Bereitstellung auch von Ihrem lokalen Computer aus implementieren.



  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 .
    • Befolgen Sie für iOS die Beta-Bereitstellungsanleitung für Fastlane iOS . Alle Bearbeitungen können so einfach wie das Hinzufügen sein lane, das build_ios_appmit export_method: 'app-store'und aufruft upload_to_testflight. Unter iOS ist ein zusätzlicher Build erforderlich, da er flutter builderstellt .appund keine Archive .ipaszur Veröffentlichung erstellt.


Sie können jetzt lokal bereitstellen oder Ihre Bereitstellung auf ein CI-System (Continuous Integration) migrieren.



Lokale Bereitstellung



  1. Erstellen Sie Ihre Anwendung im Release-Modus.

    • flutter build appbundle...
    • flutter build ios --release --no-codesign... Es ist vorerst nicht erforderlich, zu signieren, da Fastlane die Signatur bei der Archivierung übernimmt.
  2. Führen Sie das Fastfile-Skript auf jeder Plattform aus.

    • cd androiddann fastlane [ lane].
    • cd iosdann fastlane [ lane].




Konfigurieren der Build- und Cloud-Bereitstellung



Befolgen Sie zunächst die Anweisungen im Abschnitt "Lokale Einrichtung", die im Abschnitt "Lokale Einrichtung" beschrieben sind, um sicherzustellen, dass der Prozess ordnungsgemäß funktioniert, bevor Sie zu einem Cloud-System wie Travis wechseln.



Der wichtigste Punkt, den Sie beachten sollten, ist, dass Sie Ihre Anmeldeinformationen, wie z. B. den JSON des Play Store-Dienstkontos oder das iTunes-Verteilungszertifikat, nicht auf dem Server belassen sollten, da Cloud-Instanzen kurzlebig und unzuverlässig sind.



Continuous Integration (CI) -Systeme wie Cirrus unterstützen normalerweise verschlüsselte Umgebungsvariablen zum Speichern privater Daten.



Treffen Sie alle Vorkehrungen, um die Werte dieser Variablen nicht in Ihren Testskripten auf die Konsole zu drucken. Diese Variablen sollten auch in Pull-Anforderungen erst verfügbar sein, wenn sie zusammengeführt wurden, damit Angreifer keine Pull-Anforderung erstellen können, die diese Geheimnisse stiehlt. Seien Sie vorsichtig, wenn Sie mit diesen Geheimnissen in Pull-Anforderungen interagieren, die Sie akzeptieren und zusammenführen.



  1. Machen Sie Anmeldeinformationen kurzlebig.

    • Auf Android:



      • Entfernen Sie das Feld json_key_fileaus Appfileund speichern Sie den Inhalt der JSON-Zeichenfolge in einer verschlüsselten Variablen in Ihrem CI-System. Verwenden Sie das Argument json_key_datain upload_to_play_store, um die Umgebungsvariable direkt in Ihre zu lesen 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