CI/CD para Android com Bash Puro: Compilação e Publicação sem Ferramentas Extras

CI/CD para Android com Bash Puro: Compilação e Publicação sem Ferramentas Extras

Descubra como construir um pipeline de Integração Contínua e Entrega Contínua (CI/CD) para aplicações Android utilizando apenas scripts Bash, automatizando compilações, publicações no Google Play e notificações.

MundiX News·20 de junho de 2026·10 min de leitura·👁 5 views

Um pipeline de CI/CD é, essencialmente, uma série de requisições HTTP na ordem correta. Iniciar uma compilação, consultar o status, baixar um artefato, publicar no Google Play – tudo isso é feito via REST API. O curl pode lidar com isso! Vamos ver se é possível dispensar Jenkins, plataformas pagas e frameworks Python com dezenas de dependências.

Eu montei um servidor CI/CD para aplicações Android em Bash puro. Ele inicia compilações via CI na nuvem ou Gradle diretamente, publica o resultado no Google Play e monitora notificações de publicação via IMAP. Como interface de gerenciamento, utilizei o Telegram, mas no lugar dele poderia estar Slack, Discord, ntfy, email ou um SSH comum – o transporte é uma peça substituível.

Talvez você diga que fazer tudo em Bash é estranho. Mas afinal, é a linguagem para conectar ferramentas: entrada/saída de arquivos, trabalho com variáveis de ambiente, requisições HTTP via curl, manipulação de JSON com jq. Isso significa que simplesmente aplicaremos o clássico "caminho Unix" às APIs web, e não apenas a programas locais. E, ao mesmo tempo, dispensaremos Docker e Kubernetes.

E o mais importante: será possível modificar qualquer coisa e a qualquer momento sem sofrer com o deploy. Agora a ideia parece mais sensata? Vamos experimentá-la em um exemplo, e ficará claro se isso é aplicável na vida real.

Para começar, vejamos como funcionará o ciclo completo de publicação. Para iniciá-lo, basta clicar em "Publish Beta" – e em alguns minutos você verá o que apareceu no chat.

Ciclo completo: download do artefato, upload para o Google Play, notificação de publicação O bot baixou o AAB do Codemagic, fez o upload para o Google Play, registrou a transação de edição – e depois, quando o Google concluiu a moderação, o monitor de e-mail capturou a mensagem e enviou a notificação final. Tudo sem intervenção humana.

E agora, contarei como construí isso. Se você quiser replicar, aqui está o que você precisará:

  • Token de bot do Telegram (solicite ao @BotFather);
  • Token da API do Codemagic ou Android SDK local com Gradle;
  • Arquivo JSON da Service Account do Google Play com permissões de Release Manager;
  • Caixa de e-mail com acesso IMAP (Gmail serve);
  • Docker ou qualquer host Linux;
  • Dependências: curl, jq, openssl, mbsync;

Arquitetura O sistema consiste em dois processos independentes em um único contêiner Docker.

Orquestrador de compilações (publish_bot.sh) – recebe comandos do operador, inicia a compilação via API de CI ou Gradle local, entrega o artefato, publica no Google Play, responde a requisições de status. Atende vários projetos simultaneamente – cada um com seu processo worker.

Monitor de e-mail (imap_to_telegram.sh) – a cada 30 segundos lê os e-mails recebidos via IMAP, procura por mensagens da Google Play Console, retransmite notificações para o canal correto.

Entre eles – o arquivo channel_ids.json: um mapeamento "nome do pacote → identificador do canal". Ambos os processos o leem independentemente.

Arquitetura do serviço: dois processos, arquivo de mapeamento comum, transporte substituível O transporte – bloco superior (comandos) e inferior (notificações) – é intencionalmente separado da lógica. Quer migrar do Slack para o Telegram ou adicionar envio paralelo para ntfy – edite três funções, sem afetar o núcleo.

Cada outro bloco também é substituível independentemente: mudar o serviço de CI – uma função, adicionar um track de publicação – um case no switch. A arquitetura é intencionalmente plana: sem abstrações, apenas funções.

O deploy é um comando:

bash
docker run -d \
  --name cicd-server \
  --restart unless-stopped \
  -e IMAP_PASSWORD='senha' \
  cicd-server

O script start.sh inicia ambos os processos:

bash
. /publish_bot.sh &
. /imap_to_telegram.sh &
wait

A seguir, detalharemos as tarefas específicas em ordem.

Transporte Antes de mergulhar nos detalhes – um ponto arquitetural importante. No sistema, existem exatamente três pontos de interação com o operador:

Comandos de entrada – de onde o serviço recebe a tarefa (iniciar compilação, mostrar status). Notificações de saída – para onde relatar o resultado. Entrega de artefatos – para onde entregar o APK/AAB compilado. Tudo isso é implementado em três ou quatro funções. Mudar o transporte significa reescrever essas funções.

Apenas notificações Se a interatividade não for necessária – as opções são simples.

ntfy.sh – a opção minimalista. Serviço público, gratuito, com aplicativo móvel. Enviar notificação:

bash
curl -d "✅ Compilação ${PACKAGE} concluída" \
  "https://ntfy.sh/my-secret-build-topic"

O tópico é apenas uma string na URL. Assine no aplicativo – receba push. Sem registro, sem tokens. É possível hospedar seu próprio servidor ntfy para privacidade.

Webhooks do Slack/Discord – se a equipe já o utiliza. Para nós, basta fazer uma requisição POST com JSON:

bash
curl -X POST "$SLACK_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d "{
    "text": "✅ Compilação *${PACKAGE}* concluída"
  }"

No Discord, o campo se chama content em vez de text, a URL é diferente, mas o padrão é o mesmo.

E-mail via msmtp – funciona completamente sem dependência de serviços de terceiros:

bash
echo -e "Subject: Compilação pronta\n\n${PACKAGE} compilou com sucesso" \
  | msmtp recipient@example.com

Canal bidirecional Se precisar de comandos e notificações, a escolha é a seguinte.

Telegram – a opção mais conveniente para esta tarefa: API gratuita, long polling sem IP público, arquivos de até 50 MB podem ser enviados diretamente no chat, botões são criados com um único JSON. Detalharemos abaixo.

Slash commands do Slack – uma opção funcional para desenvolvimento em equipe. O slash command envia um POST para o seu endpoint – o que significa que você precisa de uma URL pública, ao contrário do polling do Telegram. Recebemos respostas via webhook.

Matrix/Element – protocolo aberto com API REST, suporta polling (/sync), é possível hospedar o servidor localmente. O esquema é o mesmo do Telegram: loop, depois curl /sync, processamento do evento e, em seguida, curl /send.

SSH – exótico para uso pessoal, mas as dependências são zero:

bash
ssh user@cicd-host "./publish_bot.sh build_release com.example.app"

Cron – serve se a interatividade não for necessária. Se você tem compilações noturnas e releases beta semanais, pode automatizar tudo e dispensar os mensageiros.

O que é realmente difícil de substituir é o envio de arquivos. O Telegram aceita APKs diretamente no chat, o arquivo é baixado com um toque. O Slack tem um limite de upload no plano gratuito, ntfy não tem arquivos. Alternativa: S3 ou Cloudflare R2 como armazenamento, e o link virá na notificação.

Vinculação do projeto a um canal de notificação O serviço atende vários aplicativos. Como ele sabe para qual projeto veio o comando e para qual canal enviar a notificação?

O restante do conteúdo está disponível apenas para membros. Materiais das últimas edições tornam-se disponíveis separadamente apenas dois meses após a publicação. Para continuar a leitura, é necessário se tornar um membro da comunidade "Xakep.ru". Junte-se à comunidade "Xakep.ru"! A associação à comunidade durante o período especificado lhe dará acesso a TODO o material "Xakep", permitirá baixar edições em PDF, desativará a publicidade no site e aumentará seu desconto acumulado pessoal! Saiba mais Já sou membro "Xakep.ru" ← Anterior Ransomware usa servidores do Microsoft Teams para ocultar tráfego

🛡️⚡

Pare de pesquisar. Comece a hackear.

O MundiX é seu copiloto de pentest com IA: comandos exatos, análise de outputs e próximo passo na kill chain — em segundos.

Testar grátis por 7 dias →

Sem cartão para começar · Planos a partir de R$49/mês

📤 Compartilhar & Baixar

🧰 Ferramentas recomendadas

Divulgação: alguns links são patrocinados. Podemos receber comissão se você comprar — sem custo extra para você. Só indicamos o que faz sentido para a comunidade.

Aprendendo Kali Linux: Teste de segurança, pentest e hacking ético

Aprendendo Kali Linux: Teste de segurança, pentest e hacking ético

Com centenas de ferramentas pré-instaladas, a distribuição Kali Linux facilita o trabalho de os profissionais de segurança começarem a fazer testes de segurança rapidamente. No entanto, com mais de 600 ferramentas em seu arsenal, o Kali Linux também pode ser desafiador. A nova edição deste prático livro abrange as atualizações nas ferramentas e inclui uma melhor abordagem da análise forense e da engenharia reversa. Ric Messier, autor, não fica apenas no teste de segurança, mas também faz uma abordagem sobre a execução de análise forense, incluindo a análise em disco e na memória, assim como alguma análise básica de malware. • Explore as diversas ferramentas disponíveis no Kali Linux • Entenda o valor do teste de segurança e examine os tipos de teste disponíveis • Aprenda os aspectos básicos do pentest em todo o ciclo de vida do ataque • Instale o Kali Linux em vários sistemas, tanto físicos quanto virtuais • Descubra como usar diferentes ferramentas destinadas à segurança • Estruture um teste de segurança baseado nas ferramentas do Kali Linux • Estenda as ferramentas do Kali para criar técnicas de ataque avançadas • Use o Kali Linux para ajudar a criar relatórios quando o teste terminar “A abordagem concisa, clara e baseada na experiência adotada por Ric Messier para a introdução do Kali Linux e dos testes de cibersegurança é incomparável. Este livro é uma leitura excelente e acessível para iniciantes e um recurso valioso para qualquer pessoa.” —Alexander Arlt, Consultor sênior de segurança, Google

Ver na Amazon
Gshield 2 em 1 Hub Extensor Conector USB-C + USB-A e Adaptador de Rede Ethernet LAN RJ45 com 3 Entradas USB 3.0 até 5 Gbps em Liga de Alumínio para Computador e Notebook, Cinza

Gshield 2 em 1 Hub Extensor Conector USB-C + USB-A e Adaptador de Rede Ethernet LAN RJ45 com 3 Entradas USB 3.0 até 5 Gbps em Liga de Alumínio para Computador e Notebook, Cinza

Compatível com portas USB-C e USB-A, ideal para ampliar a conectividade de dispositivos como MacBook Pro e outros com portas USB-C. Inclui um adaptador USB-A extra, proporcionando uma conexão Ethernet estável e veloz de até 1 Gbps, perfeita para filmes, jogos online e videoconferências. Oferece três portas USB 3.0 com velocidades de transferência de até 5 Gbps, permitindo conectar mouse, teclado, discos rígidos e outros periféricos. Fabricado em alumínio durável, garantindo longa vida útil e resistência ao uso diário. Design compacto e leve, ideal para viagens de negócios e uso diário, facilitando o transporte e armazenamento. Funciona com Windows 10/8.1/8, Mac OS e Chrome OS, oferecendo versatilidade incomparável para diversas necessidades de conectividade. Assegura uma conectividade estável e rápida, perfeita para tarefas exigentes como transferência de dados, streaming e mais.

Ver na Amazon
Hacking APIs: Breaking Web Application Programming Interfaces

Hacking APIs: Breaking Web Application Programming Interfaces

Hacking APIs is a crash course on web API security testing that will prepare you to penetration-test APIs, reap high rewards on bug bounty programs, and make your own APIs more secure. You'll learn how REST and GraphQL APIs work in the wild and set up a streamlined API testing lab with Burp Suite and Postman. Then you'll master tools useful for reconnaissance, endpoint analysis, and fuzzing, such as Kiterunner and OWASP Amass. Next, you'll learn to perform common attacks, like those targeting an API's authentication mechanisms and the injection vulnerabilities commonly found in web applications. You'll also learn techniques for bypassing protections against these attacks. In the book's nine guided labs, which target intentionally vulnerable APIs, you'll practice: Enumerating APIs users and endpoints using fuzzing techniques Using Postman to discover an excessive data exposure vulnerability Performing a JSON Web Token attack against an API authentication process Combining multiple API attack techniques to perform a NoSQL injection Attacking a GraphQL API to uncover a broken object level authorization vulnerability

Ver oferta
Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition

Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition

Up-to-date strategies for thwarting the latest, most insidious network attacks This fully updated, industry-standard security resource shows, step by step, how to fortify computer networks by learning and applying effective ethical hacking techniques. Based on curricula developed by the authors at major security conferences and colleges, the book features actionable planning and analysis methods as well as practical steps for identifying and combating both targeted and opportunistic attacks. Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition clearly explains the enemy's devious weapons, skills, and tactics and offers field-tested remedies, case studies, and testing labs. You will get complete coverage of Internet of Things, mobile, and Cloud security along with penetration testing, malware analysis, and reverse engineering techniques. State-of-the-art malware, ransomware, and system exploits are thoroughly explained. Fully revised content includes 7 new chapters covering the latest threats Includes proof-of-concept code stored on the GitHub repository Authors train attendees at major security conferences, including RSA, Black Hat, Defcon, and B-Sides

Ver na Amazon
Bloqueador USB de privacidade de porta USB para PC, notebook, bloco de laptop,

Bloqueador USB de privacidade de porta USB para PC, notebook, bloco de laptop,

Proteção de privacidade aprimorada: protege o link de transmissão de dados para evitar roubo de informações, fornecendo proteção de segurança robusta que protege a privacidade do usuário durante transferências de arquivos e garante uma conexão segura para interações de dispositivos sem preocupações em vários ambientes Uso a longo prazo: a camada protetora resistente ao desgaste, combinada com um corpo de metal resistente, oferece gerenciamento de calor confiável e qualidade duradoura durante o uso diário Entrega eficiente de energia: a tecnologia de chip inteligente garante a identificação automática dos requisitos de energia, fornecendo carregamento eficiente alinhando-se com vários protocolos de carregamento rápido para maior conveniência Proteção contra sobrecarga: evitando riscos de sobrecarga, este bloqueador de dados USB protege a vida útil da bateria e garante um desempenho estável, mantendo um fluxo estável de energia para melhorar a longevidade do dispositivo de forma eficaz Prático de transportar: com atenção à portabilidade, este bloqueador de dados USB oferece um design compacto que é leve e fácil de transportar, melhorando a conveniência do usuário e operação eficiente

Ver na Amazon

📩 Newsletter MundiX

Receba novidades de cibersegurança + um checklist de pentest grátis. Sem spam.

Ao assinar você concorda em receber e-mails. Cancele quando quiser.