CI/CD utilizando Fastlane e Circle CI Parte 1
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