CI/CD utilizando Fastlane e Circle CI Parte 1

Fernando de Jesus Grangeiro
Android Dev BR
Published in
5 min readJan 24, 2020

--

Visão Geral

Os desenvolvedores em sua maioria sabem o que é Continuous Integration (CI) e Continuous Delivery (CD) e o seu conceito aplicado, também sabem a importância e as vantagens que um CI e um CD trazem para um projeto seja ele sendo de um longo prazo ou não, seja ele sendo um projeto grande ou pequeno. Dividirei toda essa configuração em dois artigos, sendo o primeiro em como fazer o projeto ter o primeiro build em uma ferramenta de CI, no segundo será abordado como fazer o CD. Em ambos os artigos não será abordado o funcionamento das ferramentas Circle CI e Fastlane em detalhes

O que utilizaremos

  • Android Studio 3.5.3
  • Iterm2
  • Fastlane
  • CircleCI

Just A Moment To Listen A Word Please

Antes de começarmos vou fazer uma explicação bem breve só para a gente seguir com o tutorial sem nenhum problema de os conceitos serem confundidos e todo o processo de configuração se tornar algo totalmente custoso.

Continuous Integration

Continuous Integration é uma prática dentro do desenvolvimento de software que visa tornar a integração de código mais fácil e rápida utilizando builds e testes automatizados, sendo assim toda vez que alguém fizer qualquer integração dentro do seu projeto ele realizará um build e os testes automaticamente, assim qualquer erro que tenha no projeto será detectado de uma forma muito mais rápida tornando o desenvolvimento de um software algo muito mais prático e fácil

Continuous Delivery

Continuous Delivery é uma prática dentro do desenvolvimento de software que visa tornar todo o processo de entrega de um executável, .apk ou .aab, mais fácil e prática visando sempre garantir que todo o processo de gerar o executável e entregar seja algo simples e facilmente reversível.

Circle CI

Circle CI é uma ferramenta tanto para CI quanto para CD, ela automatiza o deploy através de pipelines que são acionadas, a própria ferramenta tem suporte para diversas plataformas de desenvolvimento. O Circle CI foi escolhido devido a extrema facilidade de configuração e por ter um grande tempo de BUILD de graça para ser utilizado, além de integrar com o Bitbucket e o GitHub.

Fastlane

O Fastlane é um projeto Open Source feito para facilitar o processo de lançamento de versões de projetos Mobile. Por ser Open Source a ferramenta tem diversas funcionalidades que foram implementadas pela própria comunidade e muito suporte da mesma. O Fastlane foi escolhido pelo grande suporte que recebe e por abstrair muitos processos que geralmente são de muito tédio para os desenvolvedores.

Here We Go!

Primeiro de tudo, precisamos garantir que o nosso projeto está compilando pelo terminal, pois isso é essencial para ter CI em um projeto, nesse caso será usado o iTerm2 para testar isso, o Android Studio também possui um terminal próprio caso não queira baixar o ITerm2, execute o comando abaixo

./gradlew tasks

Esse comando mostras todos os comandos que podem ser executados dentro do projeto, após terminar o processo de mapear todos os comandos executados, só será necessário subir um pouco para ver as Tasks específicas de build.

Execute o comando

./gradlew assemble

Esse comando vai executar todas as possíveis formas de gerar um .apk do nosso projeto, isso não vai ser o mais essencial no momento de configurar o CI, mas será o principal na hora de gerar uma versão para ser entregue pelo CD. Se ao terminar a execução do comando aparecer no terminal uma resposta falando BUILD SUCCESSFUL, igual ao da imagem abaixo, podemos ir para o próximo passo, caso contrário ele irá exibir uma mensagem de BUILD FAILED com o que possivelmente está quebrando o build, conserte o erro para prosseguir.

I’m Ready For The CI

Agora que sabemos que o projeto consegue executar o build pelo terminal, vamos para o Circle CI, só será preciso criar uma conta no Circle CI para começar a utilizar. Após a conta criada e dar acesso ao GitHub ou Bitbucket, coloque para observar o projeto que você queira implementar o CI

Após isso ele irá pedir que você especifique qual a linguagem que será usada no projeto, pois assim ele gerará um arquivo config.yml que tenhas os passos para fazer o CI do projeto, nesse caso só precisa escolher a opção Gradle(Java).

Com o código gerado, baixe o arquivo config.yml, coloque o arquivo no projeto em uma pasta chamada .circleci e de um push para o repositório online.

Depois de fazer isso, só precisará apertar no botão Start Building, quando começar o building o próprio site do Circle CI vai redirecionar para a tela com todos os jobs que foram ou estão sendo executados, no caso o primeiro build do projeto irá falhar igual a imagem abaixo.

Apesar do projeto estar com um config.yml para Gradle(Java) ainda faltam as dependências Android, você só precisará alterar o config.yml para o código abaixo

version: 2
jobs:
build:
working_directory: ~/code
docker:
- image: circleci/android:api-28
environment:
JVM_OPTS: -Xmx3200m
steps:
- checkout
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run:
name: Download Dependencies
command: ./gradlew androidDependencies
- save_cache:
paths:
- ~/.gradle
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run:
name: Build Project
command: ./gradlew build

Após feita a alteração e só fazer o commit, fazer o push pro repositório online e assim terá o primeiro GREEN BUILD no Circle CI.

Is Not The End

Pronto, agora que o Circle CI está configurado e já temos o primeiro GREEN BUILD o projeto está pronto para começar a configuração do CD utilizando FastLane, mas isso só será abordado no próximo artigo

--

--