Fonte: Selim Arda Eryilmaz — link

Como aplicamos CI/CD para o Android aqui na Empiricus. — Parte 2

Lucas Pires
#EmpiricusTech
Published in
3 min readJul 11, 2022

--

Para entender o que está sendo explicado link para parte 1.

Sabendo que a versão SNAPSHOT está publicada, agora precisamos enviar essas informações para o App, para que use essa versão com as mudanças. Bem, vamos configurar o build.gradle raiz para receber esses dados via parâmetros antes de mais nada, ficando assim:

Fonte: Autor

Explicando de forma rápida: O System.getProperty(“ …”) trabalha com chave valor, no caso a chave é “versionModuleXPTO”, “versionModuleABC” e o valor será recuperado para a variável versionModuleXPTO/ABC respectivamente podendo ser NULL. “versionSuffix” será o nome da versão do App para facilmente ser identificado o que contém nesse pacote. Essas variáveis ficarão expostas para todos os submódulos do projeto App.

Feito essa configuração para receber a versão via variável, podemos seguir para a próxima parte que é configurar o build.gradle do app. No caso apenas fazer a implantação dos módulos. Algo bem corriqueiro para os devs android. Assim:

Legal Lucas, tudo configurado, mas como envio e recupero as informações?

Após a publicação da versão do módulo, temos mais uma etapa. Essa etapa é responsável por iniciar a esteira do app. Via curl passamos as configurações como ambiente, branch, variáveis etc. Logo abaixo mostrarei com o curl fica:

Ah, já ia me esquecendo de mencionar que utilizamos a Bitrise para prover o serviço de CI/CD.

Fonte: Autor

Com isso iniciamos a esteira do App.

Fonte: Autor

Agora precisamos pegar as informações passadas pelo curl(link parte 1) e colocá-las nas variáveis(“versionSuffix”, “versionModuleXPTO”), podemos fazer da seguinte maneira no momento de passar os argumentos para o script:

Fonte: Autor

Com isso a variável(ext.versionModuleXPTO) responsável por determinar a versão do módulo XPTO invés de ser 0.0.1, será 0.0.1-emp-999-SNAPSHOT, como foi feito na final da parte 1.

A variável ext.versionName será 1.0.0-emp-999-SNAPSHOT. Após o build será lançado um artefato no Firebase App Distribution com o nome 1.0.0-emp-999-SNAPSHOT, com isso teremos o artefato já com nome referenciando a tarefa no Jira.

O que cada etapa faz até aqui:

Fonte: Autor

As etapas SSH KEY, GIT CLONE, CHECK BRANCH SYNC já foram explicadas na parte 1, então vamos focar nas outras:

TASK ANDROID(Build): Temos uma pequena mudança desde a parte 1 do artigo, agora o build recebe alguns parâmetros para determinar quais versões dos módulos serão usadas e também um sufixo, caso exista.

TASK ANDROID(SIGN): Aqui se efetua a assinatura do app com a chave privada requerimento do Google Play Console.

FIREBASE APP DISTRIBUTION: Será efetuado upload do artefato gerado para ficar disponível para download pelo time de QA.

GOOGLE PLAY DEPLOY: Nesta etapa é enviado para loja o artefato no formato AAB e as configurações de distribuição.

NOTIFICAR CANAL SLACK/TEAMS: Nesta etapa é configurado um mensagem com o link para download do artefato.

Com isso termino aqui a apresentação da esteira que foi criada para atender as demandas do Android aqui na Empiricus.

--

--

Lucas Pires
#EmpiricusTech

Android Engineer at Empiricus. MBA Software Engineering.