Automatizando builds e submissões com Fastlane
Essa ferramenta incrível que vêm ganhando muitos adeptos têm facilitado bastante a vida dos desenvolvedores. Com ela, é possível deixar toda a parte "chata" na hora de publicar seu app ou disponibilizar para testes.
Venho nesse post mostrar um pouco do que você pode fazer com essa ferramenta para automatizar processos manuais de envio e submissão para a App Store e TestFlight.
Instalando o Fastlane no macOS 💻
Para começar, é necessário instalá-lo da seguinte forma:
- Instalando via homebrew:
brew install fastlane
- Instalando via RubyGem:
sudo gem install fastlane -NV
Configurando ferramenta de linha de comando para o xcode
Agora, precisamos instalar as ferramentas de linha de comando mais recente do xcode, para que o fastlane consiga realizar builds e outros processos:
xcode-select --install
OBS: Se durante a configuração do fastlane haja algum erro de que não conseguiu localizar o Xcode, talvez o comando abaixo possa lhe ajudar:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
Inicializando configuração do Fastlane
Agora que começa a parte mais interessante. iremos configurar o fastlane para o seu projeto; para isso execute o comando:
fastlane init
OBS: é importante que esse comando seja executado dentro da pasta onde se encontra o seu xcodeproj ou xcworkspace.
Ao executar o comando acima você verá uma tela como essa:
ao escolher da opção 1 a 3, o Fastlane irá montar um template de código em um arquivo chamado Fastfile, isso ajuda a poupar tempo durante a configuração, mas como irei detalhar cada opção dessa, selecione o número 4 para que possamos montar nosso arquivo Fastfile manualmente.
Configurando Fastfile manualmente
Independente da escolha durante a execução do fastlane init, será criado uma pasta fastlane, e um arquivo Gemfile. Acesse a pasta fastlane e verá dois arquivo que são:
"Appfile" => Arquivo onde ficará o bundle identifier do app, assim como o seu appleID
"Fastfile" => Arquivo que ficará seu script de automatização.
Primeiro abra o arquivo Appfile com um editor de texto de sua preferência, e coloque as informações necessárias.
Agora iremos codificar o script de automação. Irei repartir em 3 principais configurações: automatização de compilação para o testFlight, compilação para a AppStore e automatização de screenshots.
- Script para o testFlight
O arquivo é composto por esse código base escrito em Ruby. Nele definimos algumas coisas como plataforma default e as nossas funções de automatização. Veja abaixo como é nosso arquivo base.
A palavra reservada "desc", serve para descrever o que a função, que está logo abaixo, irá fazer. Toda função do Fastlane irá iniciar com a palavra reservada "lane" como exemplo no snippet abaixo, onde a função "beta" executa duas ações(que por sinal são actions do próprio Fastlane).
E assim podemos ir criando diversas ações dentro de uma função lane, como essa abaixo chamado beta, que executa a incrementação do build number da versão atual, compila o app e envia para o Testflight.
- Script para a App Store
Existem duas formas de enviar seu app para a loja: a primeira é caso sua compilação já tenha passado por upload para a App Store. E a outra é quando se deseja subir uma compilação nova que vá direto para a loja.
Abaixo eu criei um snippet onde existem as condições expostas acima. Dependendo da resposta do usuário(yes/no), o fluxo segue.
A função submit_review que se encontra no script acima, foi uma função criada para submeter seu App para revisão. Isso significa fazer todo aquele processo de colocar screenshots na loja, descrever texto promocional, e todas as informações necessárias para submeter para revisão da Apple.
Abaixo segue a função mencionada:
Para executar qualquer dessas funções que você criou do Fastfile, execute o comando no terminal seguido do nome da função, ex:
fastlane release
Simples não é! Agora é só dedicar seu tempo a outra atividade ou tomar aquele cafezinho sem se preocupar se esqueceu de algo ou subiu algo errado( A menos que tenha feito o script de forma errada e não tenha testado o mesmo rsrsrs).
Bom, deu pra sentir um gostinho de como o Fastlane pode ajudar você.
Qualquer outra dúvida, manda um comentário no Gist, deixei no link logo abaixo. Ficarei feliz em ajuda-lo, pois sua dúvida pode ser de muitos!✌🏼
- Fastlane actions(lá você encontra as actions disponíveis no Fastlane)
https://docs.fastlane.tools/actions/
- Todos os snippets expostos nesse post e uns plus👌🏽😉
https://gist.github.com/MateusDeSousa/bbb4801ba043ef6bfb9df4259d487cc2