Neste post vamos abordar como configurar o Githbub Actions para realizar build e distribuir via Fastlane.
Não sabe configurar o Fastlane? Então leia aqui.
Primeiro, configuramos o arquivo .yaml
para ser usado no Actions. Todos os arquivos das actions devem ficar dentro de .github/workflows
na raiz do seu projeto. Estes arquivos serão lidos pelo Github e acionados conforme configurados.
Criado o arquivo test_fastlane.yaml
colocamos primeiro:
name: App Distribution With Fastlane
on:
push:
branches: [master]
Aqui definimos o nome da Action (isso facilita quando você tem mais de uma e quer filtrar) e a forma como ela vai ser acionada (aqui no caso ela vai executar a cada Pull Request aberto na branch develop).
Definido isso, continuamos:
jobs:
run_test:
runs-on: macos-latest
jobs
são os trabalhos que serão feitos na execução daquela action. Dentro dele você pode definir o que será instalado, o que vai ser executado e qual Sistema Operacional será utilizado. Vale lembrar que cada job executa de forma simultânea e independente, então não é interessante colocar jobs que sejam interligadas. Mas caso seja necessário utilize-as de forma assíncrona ou realizando dependência entre jobs.
Nos jobs você define o SO em runs-on
. Estão disponíveis 3 SOs: Ubuntu, Windows e MacOS.
Depois disso chegou a hora interessante: definir os steps
:
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Java
uses: actions/setup-java@v1
with:
java-version: ${{ env.java_version }}
- name: Cache Flutter
uses: actions/cache@v2
with:
path: /opt/hostedtoolcache/flutter
key: ${{ runner.OS }}-flutter-install-cache-${{ env.flutter_version }}
- name: Install Flutter
uses: subosito/flutter-action@v1
with:
flutter-version: ${{ env.flutter_version }}
- name: Install dependencies
run: flutter pub get
- name: Generate Files
run: flutter packages pub run build_runner build --delete-conflicting-outputs
- name: App Test
run: flutter test
- name: Build iOS
run: flutter build ios --no-codesign -t lib/config/main_production.dart
Aqui já colocamos todas as steps
necessárias para poder executar os comandos do Flutter. Primeiro utilizamos a action que irá acessar seu repositório, em seguida instalar o Java e, por fim, instalar o Flutter. No Flutter inserimos o cache para que nas próximas execuções ele não precise baixar tudo novamente (lembre que cada minuto no Actions é precioso) e em seguida todos os comandos que forem necessários para realizar build e executar os testes no projeto.
No ambiente em que trabalho preferi definir dois jobs
: Um para executar o build do iOS no MacOS e outro para executar o build do Android no Ubuntu. Motivo: 1 min de MacOS consome 10 do seu tempo total no Actions. Os 3min de build do Android que você fizer irá tirar 30 minutos do teu tempo total, portanto, fica mais barato realizar dois jobs (apesar de executarem praticamente os mesmos comandos).
Depois de feito isso podemos executar o Fastlane
- name: Install Ruby
uses: actions/setup-ruby@v1
with:
ruby-version: '2.7.2'
- name: Fastlane iOS
uses: maierj/fastlane-action@v2.0.1
with:
lane: 'homologacao_firebase'
subdirectory: 'ios'
Acima instalamos o Ruby
e em seguida a Action do Fastlane, indicando o subdirectory e qual a lane iremos executar.
Nas configurações do Fastlane são mais simples pois não nos preocupamos com o build do Flutter, executando exclusivamente as assinaturas e entrega ao Firebase Distribution (no caso do iOS). Essa parte do Fastlane para iOS abordaremos em um outro post.
É isso, qualquer sugestão podem colocar nos comentários que iremos corrigir e acrescentar na medida do possível.
Referências:
Workflow syntax for GitHub Actions, GITHUB. Disponível em: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions. Acesso em 15 de Fevereiro de 2021, às 15:35.
Distribuir apps iOS para testadores com o fastlane, GOOGLE. Disponível em: https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane. Acesso em 15 de Fevereiro de 2021, às 15:37.
Deploying Flutter app to Firebase App Distribution using Fastlane, CODEMAGIC. Disponível em: https://blog.codemagic.io/deploying-flutter-app-to-firebase-app-distribution-using-fastlane/. Acesso em 15 de Fevereiro de 2021, às 15:40.
CI/CD com GitHub Actions + Fastlane LACERDA, Aryella. Disponível em: https://medium.com/naqueles-dias/ci-cd-com-github-actions-fastlane-c4c68c37be88. Acesso em 15 de Fevereiro de 2021, às 15:39.
Top comments (0)