Flutter.dev: Entrega continua con Flutter

La traducción del artículo se preparó la víspera del inicio del curso Flutter Mobile Developer .










Siga las mejores prácticas de entrega continua (CD) con Flutter para asegurarse de que su aplicación se entregue a sus probadores beta y se pruebe de forma regular sin la necesidad de manipulación manual.



carril rápido



Este tutorial le muestra cómo integrar Fastlane (un conjunto de herramientas de código abierto) en flujos de trabajo de prueba e integración continua (CI) existentes, como Travis o Cirrus.



Configuración local Se



recomienda encarecidamente probar el proceso de compilación e implementación localmente antes de pasar a la nube. También puede implementar la implementación continua desde su máquina local.



  1. Instale Fastlane: gem install fastlaneo brew install fastlane. Para obtener información más detallada, visite la documentación de Fastlane .
  2. Cree un proyecto de Flutter y cuando esté listo, asegúrese de que su proyecto se desarrolle con

    • flutter build appbundle; y
    • flutter build ios --release --no-codesign...
  3. Inicialice proyectos Fastlane para cada plataforma.

    • 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 .



    • Para Android, siga la guía de implementación beta de Fastlane Android . Toda la edición puede ser solo una adición laneque llama upload_to_play_store. Establezca el argumento aaben ../build/app/outputs/bundle/release/app-release.aabpara utilizar un paquete que flutter buildya se ha preparado.
    • Para iOS, siga la guía de implementación beta de Fastlane iOS . Toda la edición puede ser tan simple como agregar lane, que llama build_ios_appcon export_method: 'app-store'y upload_to_testflight. En iOS, se requerirá una compilación adicional, ya que se flutter buildcompila en .applugar de archivar .ipaspara su lanzamiento.


Ahora está listo para implementar localmente o migrar su implementación a un sistema de integración continua (CI).



Implementar localmente



  1. release.

    • flutter build appbundle.
    • flutter build ios --release --no-codesign. , fastlane .
  2. Fastfile .

    • cd android, fastlane [ lane].
    • cd ios, fastlane [ lane].






Primero, siga las instrucciones en la sección de configuración local descrita en la sección de Configuración local para asegurarse de que el proceso esté funcionando correctamente antes de pasar a un sistema en la nube como Travis.



Lo principal a tener en cuenta es que, dado que las instancias en la nube son efímeras y poco confiables, no debe dejar sus credenciales, como el JSON de la cuenta de servicio de Play Store o el certificado de distribución de iTunes, en el servidor.



Los sistemas de integración continua (CI) como Cirrus suelen admitir variables de entorno cifradas para almacenar datos privados.



Tome todas las precauciones para no imprimir los valores de estas variables en la consola en sus scripts de prueba. Estas variables tampoco deberían estar disponibles en las solicitudes de extracción hasta que se combinen para que los atacantes no puedan crear una solicitud de extracción que robe estos secretos. Tenga cuidado al interactuar con estos secretos en solicitudes de extracción que acepta y combina.



  1. Haga que las credenciales sean efímeras.

    • En Android:



      • Eliminar el campo json_key_filede Appfiley almacenar los contenidos de la cadena JSON en una variable de cifrado en el sistema CI. Utilice el argumento json_key_dataen upload_to_play_storepara leer la variable de entorno directamente en su 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