Se você ainda não conhece as motivações deste projeto, leia o primeiro artigo aqui.

(Como o Medium está me trollando e não me deixa fazer upload de imagens, aparentemente por conta do Cloudflare, vou postar essa série por aqui).

O primeiro passo aqui é decidir onde vamos hospedar o nosso código. Essa decisão é importante, pois vai impactar em toda a suíte de code review, pull requests, etc.

Pensando em um projeto privado, gosto bastante do Gitlab, porém o Bitbucket geralmente possui mais integrações (CI, por exemplo). Como este nosso projeto será totalmente opensource, vou optar pelo Github.

O link do repositório será https://github.com/rafaeltoledo/social-app.

Com o projeto criado, utilizei o wizard do Android Studio (atualmente na versão 3.0.1) e criei um template de projeto vazio. Não configurei uma Activity inicial, nem a opção de Kotlin, pois quero configurar o projeto passo a passo e organizá-lo melhor do que o template inicial.

Nesse ponto, vale salientar que não estou utilizando versões Canary pois é um projeto que deve ser publicado em produção. Quando se desenvolve profissionalmente é sempre importante levar isso em consideração. Nas máquinas que utilizo (tanto em casa quanto no trabalho), sempre mantenho a versão estável para desenvolver projetos e a versão Preview do Android Studio para fazer experimentos, verificar novas funcionalidades, etc.

Bom, feito isso, subi o projeto para o Github.

O último passo relativo ao repositório será configurarmos as nossas branches persistentes. Elas serão as branches que não aceitarão commits de forma direta e serão observadas pelo nosso (futuro) servidor de CI.

Configuração de repositório no Github

Aqui, além da branch master, vou criar a branch develop. Inicialmente, só derivei essa branch da master e subi para o repositório. A ideia é que o código que esteja na branch master corresponda ao código do aplicativo atualmente em produção (Google Play) e a branch develop o que esteja atualmente nas mãos dos stakeholders e alpha testers do projeto. Para o nosso aplicativo, a ideia é que essas builds sejam disponibilizadas no canal Alpha do Google Play para um grupo fechado de testers.

Vamos também fazer algumas configurações para essas branches, como exigir aprovação nos Pull Requests (PRs), exigir que PRs estejam sincronizados e que estejam passando nas verificações (vamos em breve integrar linters, testes e etc.)

Feito isso, vou salvar as configurações e pronto!

No próximo post pretendo configurar o CI para buildar esse projeto inicial, e plugá-lo nos checks de Pull Request do Github.

Ainda estou na busca de designers interessados em ajudar, principalmente nessa primeira fase do projeto! Se você quiser contribuir ou souber de alguém que gostaria de participar, me indique aqui nos comentários :)