Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Infra | Código | BD | Backend | Frontend | Qualidade |
---|
Descrição
Esta seção da documentação visa apresentar os processos de desenvolvimento utilizados no projeto Lucky Draw e os documentos referentes as formas de organização do time.
Sumário
GitFlow
GitFlow é o processo de contribuição para os projetos utilizando a ferramenta de gerenciamento de versões Git. As definições descritas serão utilizadas nos repositórios do Frontend e Backend do projeto.
Branches
Aqui será definida a estratégia de branching do projeto.
Branches protegidas
As branches protegidas não devem ser apagadas e possuem regras definidas:
main
A branch main é a principal do projeto. Esta branch representa o código do ambiente de produção da aplicação e deve ser alterada somente a partir de Merge Requests vindos da branch de development ou fixes. Somente AGES III e IV podem fazer Merges dos MR's e realizar alterações na branch main.
development
A branch development é a branch default para desenvolvimento do projeto. Esta deve ser a branch de partida de todas as outras branches do projeto, exceto fix. Essa branch é protegida para modificação que não seja através de Merge Requests. Qualquer AGES pode criar um MR pra ela e fazer merge desse MR.
Branches não protegidas
Feature:
Branches para a implementação de funcionalidades novas. O padrão de nomenclatura utilizado é feature/US-númerodaUS-atividade-desenvolvida, que representa uma breve descrição do que está sendo implementado na branch.
Exemplo: feature/US-03-tela-login.
MRs dessas branches devem sempre ser abertos para development.
Fix
Branches para correção de bugs. O padrão de nomenclatura utilizado é fix/US-01-problema, que representa uma breve descrição do que está sendo corrigido na branch. Exemplo: fix/US-01-bug-botão-header.
Em caso de Fix
, devem ser abertos Merge Requests para main e development.
Como criar uma branch?
Para garantir que o processo de desenvolvimento esteja sempre atualizado, lembre-se de executar o seguinte comando na branch dev antes de criar uma branch nova:
git pull origin development
Depois da execução desse comando é necessário oficialmente criar a Branch, para isso, execute o seguinte comando:
git checkout -b <nomeDaBranch>
Assim que criar a branch, é necessário fazer um \`push\`para garantir que a mesma estará remota:
git push --set-upstream origin <nomeDaBranch>
Pronto! Agora você já pode começar a programar na sua branch.
Como adicionar suas mudanças ao fluxo de desenvolvimento:
Commits
Salvando Localmente
Para garantir que apenas o código necessário para funcionamento da tarefa lembre-se de realizar o comando add
apenas nos arquivos essenciais para a tarefa:
git add <nomeDoArquivo>
git commit -m 'descrição da tarefa em português'
Salvando Remotamente
Depois de finalizar o desenvolvimento, envie todos os commits da sua máquina para o GitLab.
Para isso depois de realizar as etapas de salvamento local, salve remotamente com o comando push
:
git push
Abrindo um Merge Request
Após a realização do desenvolvimento de uma tarefa e ela estiver de acordo com os critérios de aceitação, é necessário que a mesma seja enviada para a branch de development, então deve-se abrir um Merge Request.
Para criar o Merge Request devem ser seguidos os seguintes passos:
-
Selecionar a branch de origem (branch de desenvolvimento) e branch (branch de development) de destino.
-
Selecionar
Compare branch and continues
. -
No campo Title, preencher com um título que descreva a funcionalidade implementada ou bug corrigido e o número da tarefa que está sendo realizada.
-
No campo Description, preencher utilizando o seguinte template:
## Link da Tarefa
[Inserir link da tarefa do Trello]
## Descrição
[Descreva brevemente o propósito e as principais mudanças e adições que foram feitas nesta solicitação de Merge]
## Checklist
- [ ] Não deixou string literais no código.
- [ ] Utilizou as variáveis padronizadas do design system (cor, títulos/fontes).
- [ ] Não deixou código comentado.
## Screenshots (se aplicável)
[Adicione capturas de tela ou imagens relevantes, se necessário.]
-
Na seção Asignee, selecione Assign to me para que você fique registrado como responsável pelo desenvolvimento daquela tarefa.
-
Em Labels adicione o tipo da tarefa que foi realizado.
-
Revise se os arquivos estão corretos e clique em Submit Merge Request.
Revisando o Merge Request
Antes de abrir o Merge Request clicando no botão de "Submit", os campos abaixo também devem ser preenchidos obrigatoriamente para serem revisados:
- Título - <tipo da tarefa (fix ou feat)>/<descrição da tarefa>
- Descrição - descrição da tarefa e/ou das mudanças no código. Caso seja uma alteração no repositório de frontend, colocar também um print dos estados da tela ou do componente desenvolvido.
- Assignee - integrante da equipe responsável pelo desenvolvimento da tarefa.
- Milestone - sprint na qual a tarefa foi realizada.
Após abertura do Merge Request, o MR será revisado por colegas de equipe.
As revisões serão feitas por apenas um AGES 3, assim devendo ele aprovar ou não. Caso o MR não seja aprovado, a pessoa que o revisou deve destacar nos comentários do MR o motivo para não tê-lo aprovado para que assim a pessoa que o desenvolveu possa fazer os ajustes para aprovação. Dessa forma, o feedback é uma ferramenta fundamental de ambos os lados a fim de garantir o cumprimento das funcionalidades a serem adicionadas pelo MR.
Uma vez que a revisão tenha sido concluída e todos os pontos de ajuste apontados tenham sido commitador na Source Branch, realize o merge e envie as alterações à branch develop.
No final de cada Sprint, para gerar uma nova versão do projeto a ser apresentada para o cliente, deve ser aberto um Merge Request para realizar o merge da branch develop na branch master, atualizando o código de produção com os desenvolvimentos realizados durante a sprint.
O merge deve ser feito com a estratégia squash-commits e as branches devem ser excluídas após o merge para a branch de destino.
Práticas de CI/CD
Para automatizar processos e otimizar o ciclo de desenvolvimento do software do projeto, criou-se uma pipeline de integração contínua (CI) e entrega contínua (CD) no projeto de Backend a partir da ferramenta GitLab CI/CD.
A pipeline criada pode ser vista aqui e contém 4 estágios que serão descritos abaixo:
- Build: executado para qualquer commit realizado em qualquer uma das branches do projeto, realiza a compilação e o build do projeto de Backend.
-
Test: envolve a execução de testes unitários do projeto de Backend, e a análise estática do código com a ferramenta Checkstyle para verificar se os padrões estão sendo seguidos.
- A execução de testes unitários é feita para qualquer commit realizado em qualquer uma das branches do projeto.
- A análise de código é executada apenas na ocorrência de: um Merge Request, um commit na branch develop, ou um commit na branch main.
-
Package: envolve o build da imagem Docker do projeto de Backend e o push desta imagem para o repositório ECR da AWS.
- Ao realizar um commit na branch develop, realiza-se o push de uma imagem com a tag "develop" para o repositório.
- Ao se criar uma Tag a partir da branch main, realiza-se o push de uma imagem, identificada pelo nome da tag, para o repositório.
-
Deploy: envolve a conexão SSH com a instância EC2 da AWS para realizar o deploy da nova versão do container do projeto de Backend.
- Ao realizar um commit na branch develop, realiza-se o deploy da imagem "develop" gerada, para o ambiente de staging.
- Ao se criar uma Tag a partir da branch main, realiza-se o deploy da imagem identificada pelo nome da tag, para o ambiente de produção.
Os dois primeiros estágios estão relacionados ao processo de integração contínua, ou seja, de integrar novas mudanças no código do repositório de Backend. Por outro lado, os dois últimos estágios estão relacionados à entrega contínua, no sentido que automatizam a liberação do código gerado, incluindo a sua implantação no ambiente produtivo.