---
# System prepended metadata

title: Tutorial - OnBoarding
tags: [Incodde]

---

---
title: Tutorial - OnBoarding
tags: Incodde
---

# Como iniciar um projeto com o git, docker e etc.

## Comandos inicias

1. Fazer um Fork do repositório que irá trabalhar
2. Criar uma pasta na sua máquina com o nome do repositório
3. Executar o comando `git init`
4. Executar o comando `git remote add upstream link-do-repo-original`
    - Exemplo: https://github.com/repo/projeto
5. Executar o comando `git fetch upstream` para puxar os arquivos do repositório original.
6. Executar o comando `git checkout -b master upstream/master` para criar um branch master local semelhante.
7. Executar o comando `git remote add origin link-do-fork` para vincular o repositório da sua conta forkeado.
8. Executar o comando `git checkout -b nome-da-branch` para criar o branch que será feito a task.

- Obs. O nome do branch deverá seguir três os padrões:
    - feat/descricao-da-task: para novas featues;
    - fix/descricao-da-task: para correções;
    - refactor/descricao-da-task: para refatoração de código.

## Configuração de arquivo .env

Ao abrir um projeto deverá ser criado na raiz o arquivo development.env para colocar as variáveis ambiente que irá trabalhar (pedir dados a um colaborador):

```bash
# FACEBOOK
TOKEN=
PAGING=
API_HOST=
API_VERSION=

#MAILGUN
MAILGUN_KEY=
MAILGUN_DOMAIN=

#HASURA
HASURA_ADMIN_SECRET=
DATA_WAREHOUSE_URL=

# RABBITMQ
AMQL_HOST=127.0.0.1
AMQL_PORT=5672
AMQL_USER=guest
AMQL_PASSWORD=guest

#REDIS
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0
REDIS_PASSWORD=root
LOGGER=error,warn,log

#HEALTHCHECKS
HEALTH_CHECK_GETFACEBOOKACCOUNTSTATUS=
HEALTH_CHECK_VERIFYSTATUSACCOUNTCHANGED=
HEALTH_CHECK_GETTIMEZONEFACEBOOKACCOUNT=
HEALTH_CHECK_GETCURRENCYFACEBOOKACCOUNT=
HEALTH_CHECK_GETPERMISSIONFACEBOOKACCOUNT=
HEALTH_CHECK_GETADSFROMFACEBOOKADS=
HEALTH_CHECK_GETINSIGHTS=
HEALTH_CHECK_GETBREAKDOWNSBYCOUNTRY=
HEALTH_CHECK_GETBREAKDOWNSBYDEVICE=

# LOGGER
LOGGER=error,warn,log
```
## Baixando Containers
Para usar as aplicações é necessário das imagens em docker do rabbitmq, mongodb e redis. Instale o docker e execute os comandos abaixo:

```bash
$ docker run -d -p 15672:15672 -p 5672:5672 -p 25676:25676 --hostname my-rabbit --name some-rabbit rabbitmq:3-management

$ docker container run -d -p 27017-27019:27017-27019 -v mongodbdata:/data/db --name mongodb mongo:4.0.4

$ docker container run --name redis -p 6379:6379 -d redis:alpine
```

## Fazendo um commit

Após fazer a alteração, é só digitar os comandos para fazer o commit:
```bash
# Bom sempre manter o branch local atualizado antes de fazer um push.
git pull upstream master --rebase

git add .
git commit -m 'Feat: A concise message'
git push -f origin feat/new-integration
```

## Fazendo um PR e WorkFlow

Após comitar tudo faça uma Pull Request para o staging para ir para a code review. Você pode seguir esse padrão para ficar bem explicativo para quem for revisar:

![](https://i.imgur.com/IwCUIUt.png)

- Obs. Se tiver conflitos mesmo depois de dar o git pull, esperar task atual em staging subir pra prod, aí sim fazer um pull da master novamente, resolver conflitos na branch local e enviar atualização para a PR;

## Workflow

1. Colocar o link do PR nos comentários do card;
2. Mover card para Code Review;
3. Após CR mover card para to Deploy, SOMENTE após as aprovações.
4. Merge em Staging: Verificar se o ambiente está livre para merge (não tem nenhuma outra task sendo testada) e aplica o 'Rebase and merge';
5. Mover card para in QA: SOMENTE uma task deve estar sendo testada em staging;
6. Após validada, abrir PR de staging para master: Colocar o link do Pull Request nos comentários da task e aguardar code review;
7. A PR aprovada, fazer o merge em Master e mover o card para Validate(prod).

## Testando no Banco de Dados
 
Se caso quiser testar uma nova funcionalidade, após ir para staging você pode acessar o ambiente do graphql na url: https://api-staging.adireto.com/graphql
ou pelo Hasura.
```bash
# Write your query or mutation here
mutation asd1 {
  authenticator(input: {
   email: "email",
   password: "password" 
  }) {
  	access_token
  }
}

query testando {
  reportsDatesByURLInDatePeriod(
		finalDate:"2020-09-01",
    startDate: "2020-09-01",
    url: "impermeabilizabrasil.com/impermeabilizacao"
  ) {
    summaries {
      url
      date
      updatedAt
      
    }
  }
}
```


**Tem algo que não estava no documento?** Não deixe de nos avisar!