Siga as práticas recomendadas de entrega contínua (CD) com o Flutter para garantir que seu aplicativo seja entregue aos testadores beta e testado regularmente, sem a necessidade de manipulação manual.
fastlane
Este tutorial mostra como integrar fastlane (um kit de ferramentas de código aberto) em fluxos de trabalho de teste e integração contínua (CI) existentes, como Travis ou Cirrus.
Configuração local É
altamente recomendável testar o processo de construção e implantação localmente antes de mudar para a nuvem. Você também pode implementar implantação contínua de sua máquina local.
- fastlane:
gem install fastlanebrew 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/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.
- Android - Fastlane Android.
lane,upload_to_play_store.aab../build/app/outputs/bundle/release/app-release.aab, ,flutter build. - Para iOS, siga o guia de implantação Fastlane iOS beta . Toda edição pode ser tão simples quanto adicionar
lane, que chamabuild_ios_appcomexport_method: 'app-store'eupload_to_testflight. No iOS, uma construção adicional será necessária, uma vez queflutter buildcria.app, ao invés de arquivos.ipaspara lançamento.
- Android - Fastlane Android.
Agora você está pronto para implantar localmente ou migrar sua implantação para um sistema de integração contínua (CI).
Implantando localmente
- Construa seu aplicativo no modo de lançamento.
-
flutter build appbundle... -
flutter build ios --release --no-codesign... Não há necessidade de assinar por enquanto, pois o fastlane fará a assinatura durante o arquivamento.
-
- Execute o script Fastfile em cada plataforma.
-
cd android, entãofastlane [ lane]. -
cd ios, entãofastlane [ lane].
-
Configurando Build e Cloud Deployment
Primeiro, siga as instruções na seção de configuração local descrita na seção Configuração local para se certificar de que o processo está funcionando corretamente antes de mudar para um sistema em nuvem como o Travis.
O principal a ser observado é que, como as instâncias de nuvem são efêmeras e não confiáveis, você não deve deixar suas credenciais, como o JSON da conta de serviço da Play Store ou o certificado de distribuição do iTunes, no servidor.
Os sistemas de integração contínua (CI) como o Cirrus geralmente oferecem suporte a variáveis de ambiente criptografadas para armazenar dados privados.
Tome todas as precauções para não imprimir os valores dessas variáveis no console em seus scripts de teste. Essas variáveis também não devem estar disponíveis em solicitações pull até que sejam mescladas, para que os invasores não possam criar uma solicitação pull que roube esses segredos. Tenha cuidado ao interagir com esses segredos em solicitações pull que você aceita e mescla.
- Torne as credenciais efêmeras.
- No Android:
- Remova o campo
json_key_filedeAppfilee armazenar o conteúdo da string JSON em uma variável criptografada em seu sistema CI. Use o argumentojson_key_datainupload_to_play_storepara ler a variável de ambiente diretamente em seuFastfile. - (, base64) . CI
-
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > /home/cirrus/[directory # , gradle].keystore
- Remova o campo
- iOS:
-
FASTLANE_PASSWORDCI. - CI . Fastlane Match .
-
- No 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.
, .
-