Flutter.dev: entrega contínua com Flutter

A tradução do artigo foi preparada na véspera do início do curso Flutter Mobile Developer .










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.



  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 .
    • Para iOS, siga o guia de implantação Fastlane iOS beta . Toda edição pode ser tão simples quanto adicionar lane, que chama build_ios_appcom export_method: 'app-store'e upload_to_testflight. No iOS, uma construção adicional será necessária, uma vez que flutter buildcria .app, ao invés de arquivos .ipaspara lançamento.


Agora você está pronto para implantar localmente ou migrar sua implantação para um sistema de integração contínua (CI).



Implantando localmente



  1. 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.
  2. Execute o script Fastfile em cada plataforma.

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



  1. Torne as credenciais efêmeras.

    • No Android:



      • Remova o campo json_key_filede Appfilee armazenar o conteúdo da string JSON em uma variável criptografada em seu sistema CI. Use o argumento json_key_datain upload_to_play_storepara ler a variável de ambiente diretamente em seu 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