Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/add makefile #118

Open
wants to merge 30 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
cf6d152
Makefile
ppastorf May 10, 2024
eed5cb3
usando diretivas de Makefile no workflow de deploy
ppastorf May 10, 2024
df1909b
Makefile: rebase com alteracoes no readme
ppastorf May 11, 2024
33c16ae
doc: adicionando make para inclui comandos para facilitar o setup da …
HelioDantas May 15, 2024
f6eed88
build: add-makefile - instalar makefile para usos dentro do container…
HelioDantas May 15, 2024
fc75fd2
doc: removendo descrição duplicada
HelioDantas May 15, 2024
5e72d2f
docs: improve readme file with discord link
RogerioPiatek May 12, 2024
e5148ff
docs: updated to the link 'discord.gg/sosrs'
RogerioPiatek May 13, 2024
9380c9c
docs: changed discord link position
filipepacheco May 13, 2024
1210f82
docs: add templeate for PR
LeoFC97 May 11, 2024
f1416e5
feat: only show contact on shelter public routes on authorized roles
kelvinsb May 11, 2024
e2c6242
fix: remove unused and unauthorized contact field on list route
kelvinsb May 11, 2024
e23440c
feat: return contact when user logged, instead of some Roles
kelvinsb May 12, 2024
1bd35da
fix: suggestions about separation
kelvinsb May 13, 2024
6f8b860
Criação do endpoint para busca de cidades dos abrigos (#82)
AndersonCRocha May 13, 2024
391607a
feat: add shelter filter by geolocation radius (#93)
AndersonCRocha May 14, 2024
e8e3607
Fixing discord link on Readme (#95)
filipepacheco May 14, 2024
a81c9b6
feat: added default updated at in new shelter to avoid null field in …
fagundesjg May 14, 2024
ce67813
hotfix: login issue
fagundesjg May 14, 2024
9732790
Fix tests (#78)
giggio May 14, 2024
0e1a7a1
feat: added partners endpoint (#106)
fagundesjg May 15, 2024
b62302d
fix: Correção da issue #146 do frontend. (#105)
kevinpiske May 15, 2024
591eca2
feat: Add description and including a bearer token in swagger in user…
w-araujo May 15, 2024
037479c
fix: city filter (#116)
fagundesjg May 15, 2024
e18bbfa
doc: adicionando make para inclui comandos para facilitar o setup da …
HelioDantas May 15, 2024
d418b27
build: add-makefile - instalar makefile para usos dentro do container…
HelioDantas May 15, 2024
9d2c144
doc: removendo descrição duplicada
HelioDantas May 15, 2024
0199bcc
Merge branch 'feat/add-makefile' of https://github.com/HelioDantas/ba…
HelioDantas May 16, 2024
c743a8c
doc: colocando comandos makes no formato de tabela
HelioDantas May 18, 2024
fe4816b
fix: corrigindo comando make para rodar as migrations
HelioDantas May 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
cat .env

- name: Remove old docker image
run: echo ${{ secrets.SERVER_USER_PASSWORD }} | sudo -S docker compose down --rmi all
run: echo ${{ secrets.SERVER_USER_PASSWORD }} | sudo -S make prod-down

- name: Create new docker image
run: echo ${{ secrets.SERVER_USER_PASSWORD }} | sudo -S docker compose up -d --force-recreate
run: echo ${{ secrets.SERVER_USER_PASSWORD }} | sudo -S make prod-up
2 changes: 2 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
FROM node:18.18-alpine as node

RUN apk add --no-cache make

WORKDIR /usr/app

COPY package.json package-lock.json ./
Expand Down
97 changes: 97 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
.PHONY: *

TAG_OR_COMMIT := $(shell git describe --tags --always)
DOCKER_REGISTRY = ghcr.io
IMAGE_NAME = $(DOCKER_REGISTRY)/sos-rs/backend
CONTAINER_BACKEND = sos-rs-api

install:
@npm install

prisma:
@npx prisma generate
@npm run migrations:dev

setup:
make file-mode
make create.env.file
@$(MAKE) install
@$(MAKE) prisma

file-mode:
@echo "Configuring git fileMode to false"
git config core.fileMode false

create.env.file:
if [ ! -f .env ]; then \
cp .env.local .env; \
fi

start:
@$(MAKE) setup
@npm run start:dev

start-debug:
@$(MAKE) setup
@npm run start:debug

build:
@npm run build

clean:
@rm -rf dist

format:
@npm run format

lint:
@npm run lint

test:
@npm run test

test-coverage:
@npm run test:cov

test-debug:
@npm run test:debug

test-e2e:
@npm run test:e2e

dev-up:
@docker-compose -f docker-compose.dev.yml up -d --build

setup-docker:
make file-mode
make create.env.file
make dev-up

dev-down:
@docker-compose -f docker-compose.dev.yml down

bash:
docker exec -it ${CONTAINER_BACKEND} sh

dev-logs:
docker-compose -f docker-compose.dev.yml logs -f

dev-db-load-dump:
@docker-compose -f docker-compose.dev.yml cp prisma/dev_dump.sql db:/tmp/backup.sql
@docker-compose -f docker-compose.dev.yml exec db psql -U root -d sos_rs -f /tmp/backup.sql

# Para ser usado no workflow de build
docker-build:
@docker build . -t sos-rs-backend

docker-tag:
@docker tag sos-rs-backend $(IMAGE_NAME):$(TAG_OR_COMMIT)
@docker tag sos-rs-backend $(IMAGE_NAME):latest

# Para ser usado no workflow de deploy
prod-up:
@docker-compose -f docker-compose.yml up -d --build --force-recreate

prod-down:
@docker-compose -f docker-compose.yml down --rmi all

88 changes: 74 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@ autenticação de usuários, gerenciamento de abrigos e suprimentos, e muito mai
Se você quiser discutir ideias, problemas ou contribuições, sinta-se à vontade para se juntar ao nosso servidor do
Discord [aqui](https://discord.gg/vjZS6BQXvM).

## Workspace Dependencies
- [Node 18.18](https://nodejs.org/)
- [Docker](https://www.docker.com/get-started/)
- Make
- [Windows](https://gnuwin32.sourceforge.net/packages/make.htm)
- Linux
```bash
sudo apt update
sudo apt install make
```

## 🛠 Tecnologias Utilizadas

- **🟢 Node.js**: Ambiente de execução para JavaScript.
Expand All @@ -20,14 +31,7 @@ Discord [aqui](https://discord.gg/vjZS6BQXvM).
Para iniciar com dados de exemplo, utilize o dump do banco disponível em `prisma/migration/dev_dump.sql`. Este arquivo
pode ser executado após as migrations estarem aplicadas.

Se estiver usando Docker, os comandos para carregar o dump são:

```bash
# Copiar o dump para a pasta temporária do Docker
docker exec -it cp backup.sql POSTGRES_CONTAINER_ID:/tmp/backup.sql
# Importar o dump para o banco
docker exec -i POSTGRES_CONTAINER_ID psql -U root -d DATABASE_NAME -f /tmp/backup.sql
```
Se estiver usando Docker, você pode usar o comando `make dev-db-load-dump` para carregar automaticamente.

## 🐳 Configuração com Docker

Expand All @@ -42,31 +46,47 @@ Para desenvolvedores de frontend que não precisam executar localmente a API e o
```bash
docker-compose -f docker-compose.dev.yml up
```
Usando make:

Adicione a porta do serviço de banco no `docker-compose.dev.yml` para acessos externos:
```bash
make setup-docker
```
Usando make:

```yaml
ports:
- '5432:5432'
- '4000:4000'
```bash
make setupDocker
```

## 🚀 Configuração Inicial Local
Se você estiver recebendo algum erro relacionado a PORT da DATABASE_URL, tem uma linha comentada no .env que pode ser
descomentada para resolver o problema.

## Configuração inicial para rodar localmente

1. Clone o repositório:
```bash
git clone https://github.com/seuusuario/projeto-enchentes-backend.git
```
2. Instale as dependências:

```bash
make setup

# ou sem make

npm install
npx prisma generate
npx prisma migrate dev
npm run start:dev

```
3. Inicie o servidor:

```bash
npm start
make start

# ou sem make
npm start
```
A API estará disponível em `http://localhost:4000`.

Expand Down Expand Up @@ -100,9 +120,49 @@ ports:
- **📝 POST /supply-categories** - Registra uma nova categoria de suprimentos.
- **🔧 PUT /supply-categories/:categoryId** - Atualiza uma categoria.

Claro, aqui está a documentação para esses comandos:

---

### Comandos Make
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Talvez utilizar uma tabela com a descrição dos comando deixe o readme mais limpo e mais fácil para leitura, tipo isso aqui:

image

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

achei bem interessante o formato em tabela





### Comandos Make

Command | Docker | Locally | Description
---- | ------- | ------- | -------
install | - | `make install` | Instala as dependências do projeto usando o npm.
prisma | - | `make prisma` | Gera os artefatos do Prisma executando `npx prisma generate` e aplica as migrações do banco de dados executando `npx run migrations:dev`.
setup | `make setup-docker` | `make setup` | Configura o ambiente de desenvolvimento, desativando o `fileMode` do Git, criando um arquivo `.env` se ele não existir e executando os comandos `install` e `prisma`.
file-mode | - | `make file-mode` | Configura o Git para desativar o `fileMode`.
create.env.file | - | `make create.env.file` | Cria um arquivo `.env` a partir de `.env.local` se o arquivo `.env` ainda não existir.
start | - | `make start` | Inicia o projeto em modo de desenvolvimento executando `npm run start:dev`, após configurar o ambiente com `setup`.
start-debug | - | `make start-debug` | Inicia o projeto em modo de depuração executando `npm run start:debug`, após configurar o ambiente com `setup`.
build | - | `make build` | Compila o projeto executando `npm run build`.
test | - | `make test` | Executa os testes do projeto.
test-coverage | - | `make test-coverage` | Executa os testes com cobertura.
test-debug | - | `make test-debug` | Executa os testes em modo de depuração.
test-e2e | - | `make test-e2e` | Executa os testes end-to-end.
dev-up | `make dev-up` | - | Inicia os serviços de desenvolvimento usando Docker Compose (`docker-compose.dev.yml`).
dev-down | `make dev-down` | - | Desliga os serviços de desenvolvimento iniciados com Docker Compose.
bash | `make bash` | - | Acessa o terminal do contêiner específico `sos-rs-api` para execução de comandos específicos.
dev-logs | `make dev-logs` | - | Exibe os logs dos serviços de desenvolvimento iniciados com Docker Compose.
dev-db-load-dump | `make dev-db-load-dump` | - | Carrega um dump no banco de dados de desenvolvimento.
docker-build | `make docker-build` | - | Constrói a imagem Docker do projeto.
docker-tag | `make docker-tag` | - | Adiciona tags à imagem Docker para identificação.
prod-up | `make prod-up` | - | Inicia os serviços de produção usando Docker Compose.make
prod-down | `make prod-down` | - | Desliga os serviços de produção e remove as imagens Docker.


---


## 🤝 Contribuição

Contribuições são muito bem-vindas! Se deseja ajudar, faça um fork do repositório, crie uma branch com suas
modificações, e envie um pull request.

Sua ajuda é crucial para apoiar a comunidade afetada pelas enchentes no Rio Grande do Sul!

2 changes: 2 additions & 0 deletions docker-compose.dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ services:
- PORT=${PORT}
command: >
sh -c "npm install &&
apk add --no-cache make &&
npx prisma generate &&
npx prisma migrate dev &&
npm run start:dev -- --preserveWatchOutput"
Expand All @@ -34,3 +35,4 @@ services:
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_USER=${DB_USER}