Jenkins é um servidor CI/CD de código aberto que automatiza a criação, os testes e a entrega de aplicativos móveis. Ao contrário das soluções em nuvem, o Jenkins é implantado na própria infraestrutura e configurado por meio da interface web ou de código. De acordo com CloudBees, 2025, mais de 1.6 milhão de equipes usam Jenkins para processos de CI/CD. O sistema suporta builds distribuídos por meio da arquitetura Master-Agent e mais de 1800 plugins para integração com ferramentas de desenvolvimento.
Principais pontos
Jenkins é um servidor CI/CD de código aberto escrito em Java para automatizar a criação, os testes e a entrega de software. No contexto do desenvolvimento mobile, o Jenkins permite que as equipes criem automaticamente aplicativos iOS e Android, executem testes unitários e de UI, assinem os builds e os entreguem na App Store ou no Google Play sem operações manuais.
A necessidade do Jenkins surge quando o projeto supera os builds locais e exige integrações regulares de código de vários desenvolvedores. Criar manualmente cada commit consome tempo e está sujeito a erros — o Jenkins resolve esse problema executando pipelines automáticas a cada alteração no repositório.
De acordo com o relatório JetBrains Developer Ecosystem 2025, 54% das equipes mobile usam Jenkins como plataforma CI/CD principal. O sistema suporta qualquer linguagem e plataforma graças à arquitetura de plugins — para Android estão disponíveis Gradle e SDK Manager, e para iOS, Xcode Integration e Keychain Manager.
Use Jenkins em projetos em que é necessário controle total sobre a infraestrutura de build, a personalização de cada etapa do processo de CI/CD e a integração com sistemas corporativos de segurança.
A arquitetura do Jenkins é baseada no modelo Master-Agent. O servidor Master gerencia a configuração, o agendamento de tarefas e a interface web, enquanto os agentes executam os builds de fato em máquinas dedicadas ou temporárias. Essa arquitetura permite compilar em paralelo um aplicativo iOS em um agente macOS e um aplicativo Android em um agente Linux a partir de um único servidor Master.
O nó Master do Jenkins armazena todas as configurações, plugins e histórico de builds no diretório inicial $JENKINS_HOME. Os agentes se conectam ao Master via SSH, JNLP ou WebSocket e recebem tarefas da fila. Para o desenvolvimento mobile, recomenda-se alocar agentes macOS separados para builds iOS e agentes Linux para builds Android, com os SDKs e ferramentas instalados.
Cada agente pode ser um servidor permanente ou um contêiner Docker dinâmico. De acordo com a documentação da CloudBees, distribuir os builds por 5 agentes reduz o tempo total do pipeline de CI/CD em 70% com 10 tarefas paralelas.
Jenkins Pipeline é a definição de todo o processo de CI/CD como código, armazenado no repositório junto com o projeto. O Pipeline é descrito no Jenkinsfile e suporta duas sintaxes: Declarative (estruturada, com blocos predefinidos) e Scripted (flexível, baseada em Groovy com controle total do fluxo de execução).
A sintaxe declarativa é recomendada para a maioria dos projetos mobile, pois garante legibilidade e previsibilidade. O Scripted Pipeline é adequado para cenários complexos com estágios paralelos dinâmicos, tratamento personalizado de erros e lógica condicional baseada em variáveis de ambiente.
Jenkins Pipeline suporta duas sintaxes que definem a forma de descrever as etapas do processo de CI/CD. A sintaxe Declarative usa uma estrutura de blocos com as palavras-chave pipeline, stages, stage e steps, o que a torna intuitiva para novos usuários. A sintaxe Scripted é baseada em Groovy e oferece controle total sobre a execução por meio de operadores condicionais e loops.
O Pipeline declarativo cria automaticamente um Sandbox — um ambiente seguro para executar scripts Groovy. Isso limita o acesso a métodos perigosos de Java e Groovy, o que é fundamental em ambientes corporativos, onde a segurança dos pipelines é controlada pelo administrador.
O Pipeline declarativo é construído em quatro blocos principais: pipeline (bloco raiz), agent (indicação do agente), stages (sequência de estágios) e post (ações após a conclusão). Cada stage contém steps com comandos de build, e o bloco post define as ações para sucesso, falha ou status instável do build.
O bloco post é especialmente útil para projetos mobile — nele você pode configurar o envio de notificações ao Slack quando o build falha ou arquivar artefatos IPA e APK após a conclusão bem-sucedida. O Jenkins executa as ações post com garantia, mesmo que o pipeline seja interrompido manualmente.
// Declarative Pipeline para aplicação iOS
pipeline {
agent { label 'macos' }
stages {
stage('Build') {
steps {
sh 'xcodebuild -workspace App.xcworkspace -scheme App clean build'
}
}
stage('Test') {
steps {
sh 'xcodebuild -workspace App.xcworkspace -scheme App test'
}
}
}
}
O Scripted Pipeline fornece um bloco node em vez de agent e permite usar construções Groovy para ramificação dinâmica. Essa sintaxe é conveniente para pipelines em que o conjunto de estágios depende dos parâmetros do build ou dos resultados das etapas anteriores.
// Scripted Pipeline com estágios paralelos
node('macos') {
stage('Parallel Builds') {
parallel(
ios: { buildIOS() },
android: { buildAndroid() }
)
}
}
def buildIOS() {
sh 'fastlane ios build'
}
Para projetos iOS, o Jenkinsfile requer um agente macOS com Xcode, CocoaPods ou Swift Package Manager e Fastlane instalados. Um pipeline típico inclui os estágios: instalação de dependências, build, execução de testes, assinatura de código e entrega no TestFlight ou na App Store.
Uma característica essencial dos builds iOS no Jenkins é o gerenciamento de certificados e provisioning profiles. Recomenda-se usar o Fastlane Match para obter automaticamente os certificados do repositório ou o plugin Jenkins Credentials Binding para armazenar as chaves com segurança.
pipeline {
agent { label 'macos' }
environment {
MATCH_PASSWORD = credentials('match-password')
}
stages {
stage('Install Dependencies') {
steps {
sh 'pod install --repo-update'
}
}
stage('Build and Test') {
steps {
sh 'fastlane scan'
sh 'fastlane gym'
}
}
stage('Deploy to TestFlight') {
when { branch 'main' }
steps {
sh 'fastlane upload_testflight'
}
}
}
}
Para Unit Tests no iOS, use xcodebuild test especificando o simulador. O Jenkins suporta a publicação de relatórios XCTest por meio do plugin JUnit — converta o .xcresult para o formato XML para incorporar os resultados dos testes no painel do build.
Os builds Android no Jenkins são executados em agentes Linux com Java JDK, Android SDK, Gradle e emuladores instalados. O pipeline inclui os estágios: verificação com linter, testes unitários, build de APK ou AAB, testes instrumentados no emulador e publicação no Google Play Console.
Para gerenciar o Android SDK, use o sdkmanager no Jenkinsfile para instalar as plataformas e build-tools necessárias. Recomenda-se armazenar em cache os diretórios .gradle e .android entre os builds para acelerar execuções posteriores.
pipeline {
agent { label 'linux' }
stages {
stage('Lint Check') {
steps {
sh './gradlew lint'
}
}
stage('Unit Tests') {
steps {
sh './gradlew testDebugUnitTest'
}
}
stage('Build APK') {
steps {
sh './gradlew assembleDebug'
}
post {
success {
archiveArtifacts artifacts: '**/build/outputs/apk/**/*.apk'
}
}
}
}
}
Os testes instrumentados no Android exigem um emulador em execução. O Jenkins oferece suporte ao plugin Android Emulator, que cria e inicia automaticamente o emulador antes dos testes. Para dispositivos físicos, use o Firebase Test Lab — a integração está disponível por meio do plugin Google Cloud SDK.
O sistema de plugins do Jenkins é a principal vantagem da plataforma. Mais de 1800 plugins cobrem todas as etapas do CI/CD: da integração com sistemas de controle de versão ao deploy em serviços em nuvem. Cada plugin adiciona novas etapas ao pipeline e amplia a interface web com páginas adicionais de configuração.
Para o desenvolvimento mobile, é essencial um conjunto de plugins de gerenciamento de credenciais: Credentials Binding para armazenar tokens do App Store Connect e contas de serviço do Google Play. O plugin Xcode Integration adiciona etapas de build de aplicativos iOS pela UI do Jenkins.
| Plugin | Função | Plataforma |
|---|---|---|
| Git Integration | Clonagem do repositório, trabalho com branches e Pull Request | iOS, Android |
| Gradle Plugin | Execução de tarefas Gradle para build Android com publicação de relatórios | Android |
| Xcode Integration | Build de projetos iOS sem Jenkinsfile | iOS |
| Docker Pipeline | Execução de builds em contêineres Docker com ambiente isolado | iOS, Android |
| Slack Notification | Notificações do status dos builds nos canais do Slack | iOS, Android |
O plugin Docker Pipeline permite executar cada etapa do build em um contêiner separado, o que garante a reprodutibilidade do ambiente e elimina o problema de diferenças entre ambientes. Para builds Android, use imagens com o Android SDK pré-instalado da comunidade Gradle.
A escolha entre Jenkins e Travis CI depende do tamanho da equipe, do orçamento e dos requisitos de infraestrutura. Jenkins é uma solução self-hosted com controle total, que exige um servidor dedicado e um administrador. Travis CI é um serviço em nuvem com cobrança por uso, que não exige gerenciamento de servidores.
Para startups e equipes pequenas, o Travis CI é preferível — custo zero de infraestrutura, integração simples com o GitHub e builds prontos para iOS e Android. Para projetos Enterprise, o Jenkins oferece vantagens: runners próprios em macOS, conformidade com políticas corporativas de segurança e ajuste fino do pipeline por meio do Jenkinsfile.
De acordo com a Stack Overflow Survey 2025, Jenkins é usado por 42% dos desenvolvedores profissionais contra 12% que usam Travis CI. No entanto, o Travis CI continua popular na comunidade Open Source graças ao plano gratuito para repositórios públicos e ao baixo nível de entrada.
Jenkins oferece um conjunto de vantagens que o tornam o padrão de CI/CD para o desenvolvimento mobile. A licença MIT gratuita permite usar o servidor sem restrições em projetos comerciais, e o código aberto garante independência do fornecedor e a possibilidade de auditoria de segurança.
A arquitetura Master-Agent garante escalabilidade horizontal — adicionar um novo agente aumenta a capacidade de processamento dos pipelines linearmente. O Jenkins suporta agentes dinâmicos no Kubernetes por meio do Jenkins X, o que permite criar e destruir builds automaticamente conforme necessário.
O ecossistema de plugins abrange todas as ferramentas modernas: Docker, Kubernetes, Fastlane, SonarQube, GitLab, Bitbucket. Na ausência de um plugin pronto, é possível escrever uma extensão própria em Java ou usar as Pipeline Shared Libraries para reutilizar código entre projetos.
Perguntas frequentes
Jenkins é um servidor CI/CD Open Source para automatizar a criação, os testes e a entrega de aplicativos iOS e Android. Ele roda em Java, suporta builds distribuídos por meio da arquitetura Master-Agent e é configurado pela interface web ou pelo Jenkinsfile no repositório do projeto.
Jenkins se diferencia pela infraestrutura autogerenciada e pelo sistema de plugins. Ao contrário do Travis CI ou do GitHub Actions, o Jenkins exige instalação em um servidor próprio, mas oferece controle total sobre o ambiente de build, a segurança e as políticas de acesso para projetos corporativos.
Jenkins Pipeline é a definição do processo de CI/CD como código em Groovy, armazenada no Jenkinsfile. O Pipeline é composto por estágios (stages) e etapas (steps) que descrevem o build, os testes e o deploy. Suporta duas sintaxes: Declarative para cenários simples e Scripted para os complexos.
Para iOS, são obrigatórios Xcode Integration e Keychain Manager. Para Android, o Gradle Plugin e o Android Emulator. Para ambas as plataformas: Git Integration, Credentials Binding, Docker Pipeline e Slack Notification para notificações do status dos builds.
Instale o Jenkins no servidor, adicione um agente macOS para iOS e um agente Linux para Android, com os SDKs instalados. Crie um Jenkinsfile na raiz do repositório com a descrição dos estágios de build. Para iOS, use o Fastlane para a assinatura de código; para Android, tarefas Gradle com cache de dependências.
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