Travis CI é uma plataforma CI/CD em nuvem que automatiza a construção, teste e implantação de aplicações móveis sem gerenciar sua própria infraestrutura. O serviço integra-se diretamente com GitHub e Bitbucket, acionando builds a cada push ou Pull Request. De acordo com Travis CI, 2025, a plataforma processa mais de 10 milhões de builds mensalmente. A configuração é feita através de um único arquivo YAML .travis.yml na raiz do repositório.
Pontos principais
Travis CI é um serviço de integração contínua em nuvem que executa automaticamente builds e testes quando alterações são feitas em um repositório Git. Após conectar um repositório via GitHub ou Bitbucket, o Travis CI rastreia novos commits, Pull Requests e criação de tags, executando a configuração do .travis.yml em um ambiente virtual isolado.
O processo de trabalho do Travis CI consiste em três etapas: gatilho (push ou Pull Request), configuração do ambiente (install) e execução de tarefas (script). O serviço seleciona automaticamente uma máquina virtual com um conjunto de ferramentas pré-instaladas — imagens macOS com Xcode para iOS, imagens Linux com Android SDK e níveis de API para Android.
O Travis CI suporta Build Matrix — um mecanismo de execução paralela da mesma configuração com diferentes parâmetros. Por exemplo, você pode testar simultaneamente uma aplicação iOS no Xcode 15 e Xcode 16, e uma aplicação Android na API 33 e API 34. Cada combinação é executada em uma máquina virtual separada, reduzindo o tempo total de validação.
Travis CI difere do Jenkins e GitLab CI pelo foco na facilidade de configuração e ausência de custos de infraestrutura. O Jenkins requer instalação em servidor próprio e configuração de agentes, o GitLab CI requer uma instância GitLab autogerenciada ou em nuvem. O Travis CI funciona por assinatura e não requer administração de servidores.
Comparado ao GitHub Actions, o Travis CI fornece imagens macOS mais maduras para builds iOS e documentação detalhada para desenvolvimento móvel. O GitHub Actions, por outro lado, é melhor integrado ao ecossistema GitHub e tem mais ações da comunidade para tarefas específicas de build móvel.
Para desenvolvimento Android, o Travis CI oferece imagens prontas com Android SDK 34, Gradle 8 e suporte a emuladores. O tempo de inicialização do build é de 45–90 segundos, comparável aos concorrentes. A principal limitação é o limite de builds paralelos, que depende do plano de preços.
A arquitetura do Travis CI é construída sobre microsserviços que gerenciam a fila de trabalhos, alocação de máquinas virtuais e processamento de resultados. Ao receber um webhook do GitHub, a plataforma coloca o trabalho em uma fila, encontra uma máquina virtual disponível com a imagem de linguagem apropriada e executa os comandos do .travis.yml.
Cada build é executado em um ambiente isolado com uma imagem de SO limpa. O Travis CI suporta três tipos de ambiente: Ubuntu Linux (padrão), macOS (para builds iOS e macOS) e Windows (para .NET e UWP). Para projetos móveis, o suporte a imagens macOS com Xcode e Fastlane pré-instalados é crítico.
O ciclo de vida do build inclui fases: before_install (configuração do sistema), install (instalação de dependências), before_script (preparação de testes), script (execução de testes e build), after_script (limpeza). Cada fase é opcional e configurável no arquivo YAML.
Build Matrix permite testar uma aplicação com diferentes versões de linguagem, SDK ou ambiente em builds paralelos. A matriz é definida através das chaves language, os, env e inclui a geração automática de todas as combinações possíveis. Para projetos móveis, é útil para verificar compatibilidade com diferentes versões de iOS ou Android API.
Ao usar a matriz, o Travis CI lança uma máquina virtual separada para cada combinação. Isso aumenta o consumo total de minutos de build, mas é criticamente importante para projetos que suportam múltiplas versões de SO. Limite o tamanho da matriz a 4–6 combinações para uma relação ideal entre cobertura e custo.
O arquivo .travis.yml usa formato YAML e consiste em chaves raiz: language, os, dist (versão da distribuição), before_install, install, script e deploy. Cada chave pode conter uma string, um array de comandos ou um dicionário para configurações mais complexas. O Travis CI processa as chaves em ordem estrita, garantindo a previsibilidade da execução do build.
Para projetos iOS, a chave osx_image com a versão do Xcode é obrigatória, por exemplo xcode15.2. Para Android — a chave android com componentes SDK. O Travis CI suporta a chave deploy com provedores para upload automático de artefatos para App Store Connect, Google Play, Firebase ou GitHub Releases após um build bem-sucedido.
# .travis.yml com Build Matrix para iOS
language: objective-c
os: osx
osx_image: xcode15.2
env:
- SCHEME=App-iOS
- SCHEME=App-tvOS
script:
- xcodebuild -scheme $SCHEME clean build test
Para projetos iOS, o .travis.yml deve especificar objective-c ou swift como linguagem, a versão do Xcode via osx_image e a instalação de dependências via CocoaPods ou Swift Package Manager. O Travis CI suporta todas as versões atuais do Xcode, incluindo Xcode 16 com iOS 18 SDK, permitindo testar aplicações nas APIs mais recentes.
Uma etapa importante é o gerenciamento de certificados para assinatura de código. Use arquivos criptografados do Travis CI para armazenar perfis de provisionamento e certificados no repositório. O Fastlane Match também é suportado através de variáveis de ambiente TRAVIS criptografadas, simplificando a configuração de assinatura para builds AdHoc e App Store.
# .travis.yml para aplicação iOS com Fastlane
language: swift
os: osx
osx_image: xcode15.2
branches:
only:
- main
- /\d+\.\d+\.\d+/
before_install:
- gem install cocoapods
- gem install fastlane
install:
- pod install --repo-update
script:
- fastlane scan
- fastlane gym
Para projetos com testes de UI em XCTest, use a chave destinations no xcodebuild para especificar o simulador. O Travis CI suporta a execução de simuladores iOS em imagens macOS sem configuração adicional — o simulador inicia automaticamente ao executar o comando de teste xcodebuild test.
Para projetos Android, o .travis.yml é configurado com a linguagem android e componentes SDK especificados através da chave android. O Travis CI fornece imagens Linux com Java JDK 17 pré-instalado, Gradle e Android SDK básico. Níveis de API adicionais e build-tools são instalados via sdkmanager na fase before_install.
Uma otimização chave para builds Android é o cache dos diretórios .gradle e .m2. O Travis CI suporta cache através da chave cache, reduzindo o tempo de instalação de dependências de 120 segundos para 10–15 segundos em builds subsequentes. Especifique caminhos de cache para Gradle wrapper e Android Gradle Plugin.
# .travis.yml para aplicação Android
language: android
dist: jammy
jdk: oraclejdk17
android:
components:
- tools
- platform-tools
- build-tools-34.0.0
- android-34
- extra-google-m2repository
before_script:
- yes | sdkmanager "platforms;android-34"
script:
- ./gradlew assembleDebug testDebugUnitTest
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
Para executar testes instrumentados em um emulador Android, adicione uma etapa before_script com inicialização do emulador e espera de prontidão. O Travis CI suporta aceleração de hardware KVM em imagens Linux, acelerando significativamente a execução de testes de UI em comparação com a emulação por software.
Travis CI integra-se com GitHub e Bitbucket através de um aplicativo OAuth que adiciona um webhook ao repositório para notificação automática de novos commits. Após ativar o repositório no Travis CI, todos os pushes e Pull Requests acionam automaticamente um build, e o status (passed, failed, pending) é exibido na interface do GitHub.
A integração com GitHub Pull Request é um recurso chave do Travis CI. O status do build é exibido diretamente no PR, bloqueando a mesclagem em caso de falha nos testes. Configurar a proteção de branch no GitHub junto com o Travis CI garante que apenas código testado chegue ao branch principal.
O Travis CI suporta variáveis de ambiente criptografadas para armazenar tokens do App Store Connect, contas de serviço do Google Play e chaves de assinatura. As variáveis são criptografadas via CLI travis encrypt e adicionadas ao .travis.yml, garantindo a transferência segura de dados sensíveis para o build.
Arquivos criptografados no Travis CI permitem armazenar perfis de provisionamento e certificados iOS em um repositório GitHub sem risco de vazamento. O arquivo é criptografado usando o comando travis encrypt-file e descriptografado automaticamente durante a etapa before_install. Esta é a abordagem padrão para equipes que usam Travis CI para entrega de aplicações iOS.
A principal vantagem do Travis CI são os custos de infraestrutura zero. A equipe não precisa configurar um servidor, instalar software CI/CD ou monitorar sua disponibilidade. Toda a gestão se resume a editar o .travis.yml no repositório. O plano gratuito para repositórios públicos torna o Travis CI uma escolha popular para projetos móveis Open Source.
A limitação do Travis CI é o limite de tempo de build e de trabalhos paralelos nos planos de preços. Para equipes com alta frequência de commits (20+ por dia) e testes de integração longos, os custos de minutos em nuvem podem exceder o custo de manter um servidor Jenkins próprio. O Travis CI também não suporta imagens Docker personalizadas no plano gratuito.
Para desenvolvimento móvel, o Travis CI é adequado para equipes que usam GitHub, têm menos de 10 desenvolvedores e não requerem infraestrutura de build personalizada. Para projetos Enterprise com requisitos de Compliance ou necessidade de compilar em máquinas macOS próprias, o Jenkins continua sendo uma solução mais flexível.
Perguntas frequentes
Travis CI é uma plataforma CI/CD em nuvem para automatizar a construção, teste e implantação de aplicações móveis. O serviço integra-se com GitHub e Bitbucket, acionando builds a cada push e exibindo o status em Pull Requests para controle de qualidade do código.
Travis CI é um serviço em nuvem sem necessidade de gerenciamento de servidores, configurado via .travis.yml. Jenkins é um servidor auto-hospedado com controle total de infraestrutura e sistema de plugins. Travis CI é mais simples de configurar, Jenkins é mais flexível para cenários empresariais complexos.
Especifique language: swift, a versão do Xcode via osx_image, instale CocoaPods e Fastlane no before_install. No script, adicione comandos fastlane scan para testes e fastlane gym para build. Criptografe certificados usando travis encrypt-file para armazenamento seguro no repositório.
Especifique language: android, JDK 17 e componentes do Android SDK através da chave android. Adicione cache dos diretórios .gradle via cache. No script, execute tarefas Gradle: ./gradlew assembleDebug e testDebugUnitTest. Para testes de UI, configure a inicialização do emulador no before_script.
Sim, Travis CI é adequado para projetos comerciais de pequeno e médio porte. Os planos pagos incluem builds paralelos, repositórios privados e suporte prioritário. Para Enterprise com requisitos de Compliance, recomenda-se Jenkins ou GitLab CI com infraestrutura própria.
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