Processo de Desenvolvimento
Descrição
Esta seção é dedicada a apresentar o processo de desenvolvimento do time, junto dela serão apresentados documentos referentes a maneira que o time se organizou e trabalha.
Sumário
GitFlow
O que é?
GitFlow é o processo de contribuição para os projetos utilizando a ferramenta do Git. As definições presentes neste doc se aplicam tanto para os repositórios de frontend quando para o repositório de backend.
Branches
Branches protegidas:
As seguintes branches nunca devem ser apagadas e possuem regras específicas:
main
Branch principal do projeto. Esta branch deve sempre representar o código rodando no ambiente de produção. A branch é protegida e só pode ser alterada a partir de Merge Requests vindo diretamente da branch develop OU de branches de hotfix. Apenas AGES III e IV podem fazer merge dos MRs e realizar alterações nessa branch.
Quando é feito merge de um MR para essa branch, a Pipeline de CI é disparada para checagem.
dev
Branch default para desenvolvimento. Esta deve ser a branch de partida de todas as outras branches do projeto, exceto hotfix. 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.
Quando é feito merge de um MR para essa branch, a Pipeline de CI é disparada para checagem e em caso de sucesso o deploy é feito automaticamente para o ambiente de DEV.
Branches não protegidas (feature/fix/chore/Hotfix):
Feature: branches para implementação de funcionalidades novas. O padrão de nomenclatura é feature/ onde representa uma breve descrição do que está sendo implementado nesta branch. Exemplo: feature/tela-cadastro.
Fix: branches para correção de bugs. O padrão de nomenclatura é fix/ onde representa uma breve descrição do que está sendo corrigido nessa branch. Exemplo: fix/cor-errada-no-login.
Chore: branches para configuração. O padrão de nomenclatura é chore/ onde representa uma breve descrição do que está sendo configurado nessa branch. Exemplo: chore*/pipeline-ci*.
MRs dessas branches devem sempre ser abertos para develop.
Hotfix: é um padrão específico para "furar" o fluxo de desenvolvimento e aplicar uma correção diretamente em um ambiente mais alto (no caso do projeto, produção). Uma branch hotfix segue o padrão hotfix/ onde representa uma breve descrição do que está sendo corrigido nessa branch.
Devem ser abertos 2 MRs: um para main e um para develop.
Como posso 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 dev
git checkout -b <nomeDaBranch>
git push --set-upstream origin <nomeDaBranch>
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'
Caso tenha interesse, há um padrão de commits similar a nomenclatura de branches escolhida chamado conventional commits mas isso é apenas uma sugestão pra quem tiver interesse em conhecer.
Não hesite em realizar vários commits, assim podemos ter docuemntado e salvo vários estados do desenvolvimento
Salvando Remotamente
Depois de finalizar o desenvolvimento, envie todos os commits da sua máquina para o servidor remoto. Para isso depois de realizar as etapas de salvamento local, salve remotamente com o comando push
:
git push
Depois de uma task ter sido desenvolvida e estiver pronta de acordo com os critérios de aceitação, é necessário que a mesma seja enviada para a branch de desenvolvimento. Para isso é necessário abrir um Merge Request pela platafora GitLab:
Criando o Merge Request
A criação pode ser realizada na seção Merge Requests do repositório em que a branch foi criada. Clicando no botão New Merge Request
siga os seguintes passos:
-
Selecionar a branch de origem (sua branch de desenvolvimento);
-
Selecionar a branch de destino (branch dev);
-
Selecione
Compare branches and continue
-
Em
Title
, escreva um título que descreva a funcionalidade adicionada ou bug corrigido; -
Em
Description
, utilize o padrão abaixo:### Issue number: Adicione aqui uma referência ao número do issue relacionado a esse MR (exemplo: [#11](https://www.linkDaIsue.com)) ### Descrição: Uma lista das mudanças relacionadas a esse MR - Mudanca 1 - Mudanca 2 ### Checklist: * [ ] Não deixou string literais no código * [ ] Utilizou as variáveis padronizadas do design system (cor, títulos/fontes, imagens e etc) * [ ] Não deixou nenhum código comentado ### Foto da pipeline com status verde
-
Caso a tarefa seja visual (criação de componente/tela, correção de bug) adicione um gif exemplificando o uso (se considerar necessário);
-
Na seção
Assignee
, selecioneAssign to me
para que fique registrado quem foi o responsável pelo desenvolvimento daquela tarefa (a pessoa selecionada será chamada caso o revisor tenha dúvidas sobre a tarefa); -
Em
Milestone
selecione a Sprint em que a tarefa foi realizada; -
Em
Labels
selecione qual é o tipo de tarefa que foi realizada; -
Por último, revise se os arquivos que estão sendo enviados estão corretos e clique em
Submit Merge Request
.
-
Revisando o Merge Request
Todo MR deve ter pelo menos duas aprovações, sendo uma delas obrigatoriamente de um AGES III. Ao criar o MR, adicione como revisor o AGES III da sua Squad (ou um outro AGES III com contexto caso o PR esteja sendo aberto por um AGES III).
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.
Matriz de Responsabilidade
Essa matriz foi desenvolvida para ajudar os membros do time a saberem seus papéis na dentro do processo de desenvolvimento.
Atividades | AGES I | AGES II | AGES III | AGES IV |
---|---|---|---|---|
Alimentar a wiki | ||||
Definir squads | ||||
Definir marcos da sprint | ||||
Quebra de tasks | ||||
Desenvolvimento | ||||
Code review | ||||
Executar testes funcionais | ||||
Deploy da aplicação | ||||
Apresentação da review |
- I: Deve ser informado
- C: Deve ser consultado
- R: Responsável
- A: Aprova
Plano de Comunicação
Evento | Descrição | Responsável | Envolvidos | Frequência | Duração |
---|---|---|---|---|---|
Kick Off (Exemplo) | Primeiro encontro entre o time e os stakeholders do projeto. Nesse encontro são apresentados os principais itens do projeto e a ideia geral. Também são realizados questionamentos sobre o que foi apresentado, com a finalidade de ajudar nas definições dos requisitos do projeto em conjunto com o cliente. (Exemplo) | Cliente(s) (Exemplo) | AGES I, II, III, IV e Cliente(s) (Exemplo) | Uma vez (início do projeto) (Exemplo) | 1 hora - 1 hora e 30 minutos (Exemplo) |
TBD... | TBD... | TBD... | TBD... | TBD... | TBD... |
Plano de Riscos
Risco | Prevenção | Contingência | Estratégia |
---|---|---|---|
Atingir limite de uso gratuito da AWS (Exemplo) | Utilizar servidores apenas para validação, desligando-os quando não utilizados (Exemplo) | Alterar ambiente para outra conta de usuário (Exemplo) | Transferir (Exemplo) |
TBD... | TBD... | TBD... | TBD... |