Seja bem-vindo e obrigado por considerar contribuir com este projeto! Ler e seguir nossas diretrizes vai te ajudar a entrar com mais rapidez em nosso fluxo de trabalho, além tornar o processo de contribuição mais fácil e eficaz. Contamos com seu apoio!
Geral
- Se você não conseguir continuar uma tarefa, informe imediatamente sua equipe. A comunicação rápida evita atrasos e permite que outras pessoas te ajudem a resolver os problemas com mais rapidez.
- Não reinvente a roda. Se você pesquisou e viu que já existe uma solução bem estabelecida para o seu problema, use-a. Isso economiza tempo e recurso.
Comunicação
- Minimize o uso de IA na comunicação diária com a equipe. Valorizamos interações reais e genuínas.
- Seja objetivo na sua comunição quando precisa de ajuda (isso não significa ser rude rsrs).
- A comunicação assíncrona é uma grande aliada para equipes remotas. Para mais detalhes, clique aqui.
Para você começar a contribuir, é essencial configurar seu ambiente de trabalho local:
- Instalar ferramentas: Certifique-se de ter instalado todas as ferramentas de linha de comando que o projeto requer.
- Configurar variáveis de ambiente: Ajuste as variáveis de ambiente para garantir que seu sistema esteja preparado para rodar o projeto.
- Executar scripts de automação: Rode os scripts fornecidos para configurar dependências, inicializar bancos de dados e outras tarefas automatizadas.
Note
Lembre-se: cada projeto tem seu próprio contexto e necessidades!
Pensando nisso, elaboramos as etapas abaixo para te guiar.
O DevBox é uma ferramenta CLI que cria ambientes de desenvolvimento isolados e reproduzíveis, sem precisar usar containers Docker ou a linguagem Nix de forma nativa.
Note
Use essa opção se você não quiser instalar muitas ferramentas CLI diretamente em seu ambiente de trabalho.
Siga essas etapas para configurar seu ambiente:
- Instale o devbox:
curl -fsSL <https://get.jetpack.io/devbox> | bash
- Inicialize seu projeto:
devbox init
- Adicione os pacotes que deseja (vai mudar de projeto para projeto). Ex:
{
"$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.10.7/.schema/devbox.schema.json",
"packages": [
"awscli2@latest",
"[email protected]",
"[email protected]"
],
"shell": {
"init_hook": [
"echo 'Welcome to devbox!' > /dev/null"
],
"scripts": {
"test": [
"echo \"Error: no test specified\" && exit 1"
]
}
}
}
- Execute o seguinte comando para inicializar o shell temporário:
devbox shell
Com isso, podemos garantir que todos no projeto tenham as mesmas ferramentas nas mesmas versões, necessárias para o processo de desenvolvimento.
Note
Se você precisar de mais detalhes sobre essa configuração, verifique o arquivo devbox.json do seu projeto. Caso não exista, crie ele seguindo o passo a passo descrito acima.
Para você automatizar certas ações em seu terminal sempre que você for trabalhar nesse projeto, configure o Direnv. Essa ferramenta vai ajustar o seu shell conforme o seu diretório atual. Assim, sempre que você entrar na pasta do projeto, o Direnv fará algo, como: carregará as variáveis definidas no .env
ou disparar o shell do DevBox.
Siga essas etapas para configurar seu ambiente:
-
Acesse a documentação do direnv e siga as instruções para instalá-lo.
-
Após a instalação, crie um arquivo
.env
na raiz do seu projeto para armazenar as variáveis de ambiente utilizadas. -
Crie o arquivo
.envrc
com o seguinte conteúdo:
# Dotenv Support
[[ ! -f .env ]] || dotenv .env
# Devbox Support
has devbox && eval "$(devbox generate direnv --print-envrc)" && exit 0
- A primeira vez que você criar ou modificar um arquivo
.envrc
, você precisará autorizá-lo com o comando:
direnv allow
Seguindo essas etapas, quando você navegar para a pasta do seu projeto, as variáveis de ambiente serão carregadas automaticamente e o DevBox será inicializado.
Note
Se você precisar de mais detalhes sobre esse configuração, verifique o arquivo .envrc do seu projeto.
A ferramenta task oferece uma maneira conveniente de definir e gerenciar tarefas específicas do projeto, facilitando a automatização de scripts comuns e simplificando os fluxos de trabalho de desenvolvimento.
Note
É semelhante à ferramenta make
, que é utilizada principalmente para automatizar tarefas.
Siga essas etapas para configurar seu ambiente:
- Certifique-se de que você instalou o comando
task
seguindo as etapas de configuração do DevBox.- Caso não tenha seguido, acesse a documentação do task e siga as instruções para instalá-lo.
- Execute o comando
task
no diretório raiz do projeto para ver todos os comandos disponíveis.
Note
Se você precisar de mais detalhes sobre cada tarefa definida, verifique o arquivo Taskfile.yaml do seu projeto. Caso não exista, crie ele seguindo o passo a passo descrito acima.
Nesse projeto, exigimos que todos os commits sigam um formato específico de mensagem, o Conventional Commits. Com isso, conseguimos:
- Clareza e Consistência: As mensagens de commit seguem um formato padrão, facilitando a leitura e a compreensão das mudanças.
- Automatização: Permite a automação de processos, como geração de changelogs, versionamento semântico e lançamentos automáticos.
- Rastreamento de Alterações: Facilita o rastreamento de mudanças ao longo do tempo, tornando mais fácil identificar o que foi modificado e por quê.
- Melhoria na Revisão de Código: Proporciona uma melhor experiência de revisão de código, já que as mudanças são descritas de forma clara e padronizada.
- Comunicação Eficaz: Ajuda a todos os membros da equipe a entenderem rapidamente o contexto e o propósito de cada alteração no código.
Veja como é organizado esse formato de commits:
<type>(optional scope): <description>
[optional body]
Descreve o tipo de alteração do commit. Temos as seguintes opções:
Tipo | Descrição |
---|---|
feat | Um novo recurso (adição de um novo componente, fornecimento de novas variantes para um componente existente, etc.). |
fix | Uma correção de bug (correção de um problema de estilo, resolução de um bug na API de um componente etc.). Ao atualizar dependências que não sejam de desenvolvimento, marque suas alterações como fix . |
docs | Alterações somente na documentação. |
style | Alterações que não afetam o significado do código (espaços em branco, formatação, falta de ponto e vírgula etc.). Não deve ser usado para alterações na interface do usuário, pois essas são alterações significativas; em vez disso, considere usar feat ou fix . |
refactor | Uma alteração de código que não corrige um bug nem adiciona um recurso. |
perf | Uma alteração de código que melhora o desempenho. |
test | Adição de testes ausentes ou correção de testes existentes. |
build | Alterações que afetam o sistema de build. |
ci | Alterações em arquivos e scripts de configuração de CI/CD. |
chore | Outras alterações que não modificam arquivos de origem ou de teste. Use esse tipo ao adicionar ou atualizar dependências de desenvolvimento. |
revert | Reverte um commit anterior. |
É qualquer coisa que forneça informações adicionais ou que especifique o local de alteração do seu código. Por exemplo events
, kafka
, dockerfile
, authorization
e etc. Cada tipo (type
) de commit pode ter um escopo (scope
) opcional, cabendo a você adicionar ou omitir essa informação. Por exemplo:
feat(login): add route
Note
Use a convenção PascalCase na hora de definir seu escopo (scope
).
É o campo onde você diz o que foi feito no commit, porém de forma breve. Para isso, recomendamos que:
- Priorize descrições em inglês.
- Use o imperativo, tempo presente: "change", não "changed" ou "changed".
- Não coloque a primeira letra em maiúscula.
- Não coloque ponto (.) no final.
Note
Cada tipo de commit tem um efeito sobre a próxima release que você for lançar.
Ao criar um MR (merge request), é uma boa ideia definir o seu título seguindo a mesma convenção utilizada nas mensagens de commit. Dessa forma, se seu MR for sofrer um squash após a mesclagem, o maintainer poderá usar o título como a mensagem final do commit, criando um histórico formato, enxuto e linear.
- Crie uma branch a partir da branch
main
:
git checkout main
git pull origin main
git checkout -b sua-nova-branch
- Trabalhe na branch criada:
- Realize as alterações necessárias e faça os commits das mudanças.
- Certifique-se de que seu código atenda os padrões de qualidade estabelecidos.
- Garanta que seus commits sigam a convenção de commits definida acima.
git add .
git commit -m "fix: change the commit"
- Faça o push da sua branch:
git push origin sua-nova-branch
-
Abra uma solicitação de MR:
- No GitLab, navegue até o repositório e abra uma nova Merge Request da sua branch para a branch de produção
main
. - Adicione uma descrição clara do que foi feito e qualquer informação relevante para a revisão.
- Defina o título usando commits convencionais.
- Marque a opção de remover a branch de origem após a mesclagem.
- Marque a opção para squash dos commits.
- No GitLab, navegue até o repositório e abra uma nova Merge Request da sua branch para a branch de produção
-
Revisão e Aprovação:
- Um mantenedor revisará seu código.
- Se o código atender aos requisitos e padrões, ele será aprovado.
- Após a aprovação, seu código será mesclado na branch
main
.
-
Finalização:
- Após a mesclagem, sua branch pode ser deletada se não for mais necessária.
- Certifique-se de executar o
git pull
na branchmain
.
Seguir este processo garante que as alterações sejam revisadas adequadamente e que o código de produção permaneça estável e com qualidade.
Note
Se você tiver vários commits em seu PR que resolvem o mesmo problema, squash os commits.
Durante o processo de revisão do MR, siga essas políticas:
- Seja respeitoso e construtivo.
- Sempre realize a revisão em pares.
- Sugira alterações em vez de simplesmente comentar os problemas encontrados.
- Exigimos pelo menos um aprovador no MR, que não seja o autor.
- Se não tiver certeza sobre algo, pergunte ao autor do MR.
- Se você estiver satisfeito com as alterações, aprove o MR.
Este projeto segue a especificação SemVer. Consulte a documentação para obter mais detalhes.