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.
- Instale Fastlane:
gem install fastlaneobrew install fastlane. Para obtener información más detallada, visite la documentación de Fastlane . - 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...
-
- Inicialice proyectos Fastlane para cada plataforma.
-
fastlane init[project]/android. -
fastlane init[project]/ios.
-
- ,
Appfile.
- ,
package_name[project]/android/fastlane/AppfileAndroidManifest.xml. - ,
[project]/ios/fastlane/AppfileInfo.plist.apple_id,itc_team_id,team_id.
- ,
- .
- Supply ,
fastlane supply initPlay Store . .json - . - ITunes Connect
Appfileapple_id.FASTLANE_PASSWORDiTunes 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.
- Para Android, siga la guía de implementación beta de Fastlane Android . Toda la edición puede ser solo una adición
laneque llamaupload_to_play_store. Establezca el argumentoaaben../build/app/outputs/bundle/release/app-release.aabpara utilizar un paquete queflutter 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 llamabuild_ios_appconexport_method: 'app-store'yupload_to_testflight. En iOS, se requerirá una compilación adicional, ya que seflutter buildcompila en.applugar de archivar.ipaspara su lanzamiento.
- Para Android, siga la guía de implementación beta de Fastlane Android . Toda la edición puede ser solo una adición
Ahora está listo para implementar localmente o migrar su implementación a un sistema de integración continua (CI).
Implementar localmente
- release.
-
flutter build appbundle. -
flutter build ios --release --no-codesign. , fastlane .
-
- 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.
- Haga que las credenciales sean efímeras.
- En Android:
- Eliminar el campo
json_key_filedeAppfiley almacenar los contenidos de la cadena JSON en una variable de cifrado en el sistema CI. Utilice el argumentojson_key_dataenupload_to_play_storepara leer la variable de entorno directamente en suFastfile. - (, base64) . CI
-
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > /home/cirrus/[directory # , gradle].keystore
- Eliminar el campo
- iOS:
-
FASTLANE_PASSWORDCI. - CI . Fastlane Match .
-
- En Android:
- Gemfile
gem install fastlaneCI, fastlane . .
-
[project]/android[project]/iosGemfile, : -
source "https://rubygems.org" gem "fastlane" -
bundle updateGemfile.Gemfile.lock. -
bundle exec fastlanefastlane.
-
- 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 appbundleflutter build ios --release --no-codesign, . cd androidcd iosbundle exec fastlane [ lane]
. Cirrus Flutter.
, .
-