Fastlane é uma ferramenta de automação de builds e publicações de aplicativos móveis para iOS e Android. Fastlane gerencia a assinatura de código, compilação, execução de testes, criação de capturas de tela e envio para App Store Connect e Google Play Console. É o padrão de facto para CI/CD no desenvolvimento móvel.
Principais conclusões
Fastlane é uma ferramenta open-source que automatiza tarefas rotineiras do desenvolvimento móvel: compilar o aplicativo, executar testes, criar capturas de tela, gerenciar certificados e enviar builds para TestFlight, App Store e Google Play. Fastlane é escrito em Ruby e distribuído via RubyGems com o comando gem install fastlane.
Fastlane surgiu em 2015 como uma ferramenta para iOS, mas rapidamente se expandiu para Android. Hoje é um ecossistema de dezenas de actions — comandos integrados que podem ser combinados em cenários chamados lanes. Cada lane executa uma tarefa específica: por exemplo, build_release compila a versão de lançamento e deploy_beta envia o build para o TestFlight.
Fastlane é usado por empresas como Uber, Airbnb, Snapchat, Twitter e Shopify. De acordo com uma pesquisa de 2024, mais de 60% dos desenvolvedores iOS usam Fastlane em seus projetos. A ferramenta suporta tanto execução local quanto integração com sistemas CI em nuvem, tornando-se o padrão de facto para CI/CD móvel.
# Instalação do Fastlane
sudo gem install fastlane -NV
# Inicialização no projeto
fastlane init
Após a inicialização, o Fastlane cria um diretório fastlane/ com três arquivos: Fastfile (cenários), Appfile (configurações do app) e Matchfile (configurações de certificados). Esta estrutura permanece a mesma para ambas as plataformas — iOS e Android.
O arquivo de configuração principal do Fastlane é o Fastfile. Ele está localizado no diretório fastlane/ na raiz do projeto. O Fastfile é escrito em Ruby: cada lane é um bloco nomeado com uma sequência de actions. Uma lane pode aceitar parâmetros, chamar outras lanes e retornar valores.
# fastlane/Fastfile — exemplo para iOS
default_platform(:ios)
platform :ios do
desc "Build and upload to TestFlight"
lane :beta do
match(type: "appstore")
gym(scheme: "MyApp", configuration: "Release")
pilot(skip_waiting_for_build: true)
end
desc "Deploy to App Store"
lane :release do
ensure_git_status_clean
match(type: "appstore")
gym(scheme: "MyApp")
deliver(
skip_metadata: true,
skip_screenshots: true
)
push_to_git_remote(tags: true)
end
end
Cada lane é executada com o comando fastlane ios beta ou fastlane ios release. O Fastfile suporta variáveis, condições, loops e chamadas de scripts externos — é um arquivo Ruby completo. Os desenvolvedores podem reutilizar código através de private_lane (métodos locais) e import de outros Fastfiles.
Fastlane fornece mais de 200 actions integradas para a maioria das tarefas. Se a action necessária não existir, você pode escrever a sua própria em Ruby ou chamar um comando shell com sh("..."). As actions podem aceitar parâmetros — configurações de build, caminhos, tokens de acesso — e retornar resultados para uso nas etapas seguintes.
Fastlane para iOS resolve três problemas principais: gerenciamento de certificados e provisioning profiles, compilação de IPA via Xcode e publicação no App Store Connect e TestFlight. Cada uma dessas tarefas é coberta por uma action específica.
match é uma action para gerenciamento de certificados. Ele armazena todos os certificados e provisioning profiles em um repositório Git criptografado. Cada desenvolvedor e servidor CI usa o mesmo conjunto de arquivos, eliminando conflitos e problemas com certificados expirados. O Match atualiza automaticamente os perfis quando novos dispositivos são adicionados.
sigh cria e baixa um provisioning profile através do Apple Developer Portal. É usado quando você precisa obter rapidamente um perfil para um tipo específico: development, ad-hoc ou appstore.
gym compila o IPA. O Gym envolve xcodebuild com parâmetros ideais, seleciona automaticamente o esquema, configuração, opções de exportação e cria um IPA assinado. Exemplo: gym(scheme: "MyApp", export_method: "app-store").
pilot gerencia o TestFlight. Ele envia o build, adiciona testers e acompanha o status da revisão. deliver cuida da publicação completa na App Store, incluindo metadados, capturas de tela, preços e versões.
# Compilação e publicação de um app iOS
lane :deploy_ios do
cocoapods
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(changelog: "Bug fixes and performance improvements")
end
Trabalhar com App Store Connect requer tokens de acesso. Fastlane suporta dois métodos de autenticação: App Store Connect API Key (recomendado) e Apple ID com autenticação de dois fatores. As chaves de API são mais convenientes para CI/CD, pois não exigem entrada interativa de senha.
| Action | Propósito | Equivalente manual |
|---|---|---|
match | Gerenciamento de certificados e perfis | Apple Developer Portal |
sigh | Criação de provisioning profile | Xcode + Developer Portal |
gym | Compilação de IPA | xcodebuild + xcrun |
pilot | Envio para TestFlight | Xcode Organizer |
deliver | Publicação na App Store | App Store Connect Web |
scan | Execução de testes UI | xcodebuild test |
No Android, Fastlane automatiza a compilação via Gradle, assinatura de APK e AAB, envio para Google Play Console e Firebase App Distribution.
gradle é a action principal para compilações Android. Ele chama o wrapper do Gradle com as tarefas necessárias: gradle(task: "assembleRelease") ou gradle(task: "bundleRelease") para AAB. Você pode passar flags, variáveis de ambiente e o caminho para gradle.properties.
supply envia APK ou AAB para o Google Play Console. O Supply gerencia versões, tracks (internal, alpha, beta, production), notas de versão, preços e distribuição por país. Exemplo: supply(track: "beta", release_status: "completed").
screengrab cria capturas de tela para o Google Play. Ele executa testes de instrumentação que capturam screenshots do aplicativo em diferentes dispositivos e idiomas. As capturas resultantes são enviadas via supply.
# Compilação e publicação de um app Android
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Action | Propósito | Equivalente manual |
|---|---|---|
gradle | Compilação com Gradle | ./gradlew assembleRelease |
supply | Envio para Google Play | Google Play Console Web |
screengrab | Criação de capturas de tela | Captura manual + ImageMagick |
firebase_app_distribution | Distribuição via Firebase | Firebase Console Upload |
Fastlane foi projetado para funcionar em pipelines CI/CD. Ele lida corretamente com modo não interativo, variáveis de ambiente e artefatos de build. Abaixo estão exemplos de integração com sistemas CI populares.
No GitHub Actions, Fastlane é executado como um script Ruby. Um fluxo de trabalho típico: instalar Ruby e Fastlane, configurar chaves (certificados, tokens de API via secrets) e executar a lane. iOS requer um runner macOS; Android funciona no ubuntu-latest.
No GitLab CI, Fastlane é usado em .gitlab-ci.yml com configuração semelhante: instalar dependências, executar fastlane e passar artefatos. GitLab CI suporta runners macOS e Linux.
Bitrise — um CI/CD especializado para aplicativos móveis — tem suporte integrado ao Fastlane. O Bitrise Workflow pode chamar o Fastlane Step ou executar scripts personalizados com fastlane. O Bitrise gerencia certificados através do seu gerenciador de Code Signing.
# Fastfile para CI/CD com execução condicional de testes
lane :ci_test do
scan(scheme: "MyApp", code_coverage: true)
end
lane :ci_beta do
ensure_git_status_clean
version_bump_podspec(path: "MyApp.podspec")
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(distribute_external: true)
end
Um aspecto importante da integração com CI/CD é o armazenamento de segredos. Fastlane usa o arquivo .env via dotenv e variáveis de ambiente. Para iOS, as variáveis críticas são: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Para Android: SUPPLY_JSON_KEY_DATA — o conteúdo da conta de serviço do Google Play.
Fastlane inclui mais de 200 actions integradas. Abaixo está uma visão geral das mais populares com sua plataforma e propósito.
| Action | Plataforma | Descrição |
|---|---|---|
gym | iOS | Compilar IPA com parâmetros otimizados do xcodebuild |
match | iOS | Sincronizar certificados e provisioning profiles via Git |
pilot | iOS | Enviar build para TestFlight e gerenciar testers |
deliver | iOS | Publicar app na App Store com metadados |
scan | iOS | Executar testes unitários e UI com geração de relatório |
gradle | Android | Executar tarefas do Gradle: assemble, bundle, test |
supply | Android | Enviar APK e AAB para Google Play Console |
screengrab | Android | Capturas de tela automáticas para Google Play |
firebase_app_distribution | Android | Distribuir builds via Firebase |
snapshot | iOS | Capturas de tela automáticas em simuladores para App Store |
increment_build_number | iOS | Auto-incremento do build number no projeto Xcode |
appcenter_upload | Ambas | Enviar build para App Center |
Para encontrar a action necessária, use o comando fastlane action [nome], que exibe documentação, parâmetros e exemplos. A lista completa está disponível localmente: fastlane actions.
Fastlane também suporta plugins — extensões da comunidade que adicionam novas actions. Os plugins são instalados via fastlane add_plugin [nome] e estão disponíveis no registro RubyGems. Exemplos de plugins populares: fastlane-plugin-versioning (gerenciamento de versões), fastlane-plugin-sentry (enviar símbolos de depuração para Sentry), fastlane-plugin-teams (notificações no Microsoft Teams).
Perguntas Frequentes
Fastlane é uma ferramenta de automação de builds e publicação de aplicativos móveis. Ela substitui operações manuais — compilação, assinatura de código, envio para lojas — por um único comando. Fastlane reduz o tempo de lançamento de horas para minutos e elimina erros humanos durante a publicação.
Sim. Fastlane suporta ambas as plataformas de forma independente. iOS requer macOS, enquanto Android só precisa de Linux. Em um único Fastfile você pode separar lanes por plataforma: platform :ios do ... end e platform :android do ... end.
Através da action match. Ele armazena certificados criptografados e provisioning profiles em um repositório Git. Cada desenvolvedor clona o repositório, o match descriptografa os arquivos usando a senha da variável MATCH_PASSWORD e os instala no keychain. Isso resolve o problema de "funciona na minha máquina".
Sim. Fastlane tem uma action integrada firebase_app_distribution para enviar APK e IPA para Firebase App Distribution. Também está disponível firebase_app_distribution_add_testers para adicionar testers. Uma alternativa é a action appcenter_upload para App Center.
Fastlane é instalado via RubyGems: gem install fastlane -NV. iOS requer macOS com Xcode; Android requer Linux ou macOS com JDK e Android SDK. No GitHub Actions existe uma action pronta ruby/setup-ruby para instalar Ruby e Fastlane. Variáveis de ambiente são passadas através dos secrets do sistema CI.
Fastlane é uma biblioteca e CLI para automatizar tarefas de build e publicação. Bitrise e Jenkins são plataformas CI/CD completas. Fastlane funciona dentro delas: Jenkins executa Fastlane como uma etapa do pipeline, Bitrise chama Fastlane através de um Step dedicado. Fastlane não substitui um sistema CI — ele o complementa com funcionalidade específica para dispositivos móveis.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também