Skip to content

Commit

Permalink
chore: post demoday (#78)
Browse files Browse the repository at this point in the history
  • Loading branch information
izaiasmachado authored Mar 19, 2024
1 parent a5e8ace commit 9d2e789
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 45 deletions.
72 changes: 36 additions & 36 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,44 +27,44 @@ jobs:
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api
deploy-test:
name: Deploy test environment to Azure VM
runs-on: ubuntu-latest
needs: push-to-registry
environment:
name: azure-test
url: https://test-api.mandacarubroker.com.br/docs
steps:
- name: Set up Azure CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# deploy-test:
# name: Deploy test environment to Azure VM
# runs-on: ubuntu-latest
# needs: push-to-registry
# environment:
# name: azure-test
# url: https://test-api.mandacarubroker.com.br/docs
# steps:
# - name: Set up Azure CLI
# uses: azure/login@v1
# with:
# creds: ${{ secrets.AZURE_CREDENTIALS }}

- name: Save SSH private key to file
run: |
echo "${{ secrets.SSH_PRIVATE_KEY }}" > private_key
chmod 400 private_key
# - name: Save SSH private key to file
# run: |
# echo "${{ secrets.SSH_PRIVATE_KEY }}" > private_key
# chmod 400 private_key

- name: Deploy to Azure VM and run Docker
run: ssh -o StrictHostKeyChecking=no -i private_key ${{ vars.AZURE_VM_USER }}@${{ vars.AZURE_VM_IP }} 'sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api || true && sudo docker stop ${{ vars.CONTAINER_NAME }} || true && docker rm ${{ vars.CONTAINER_NAME }} || true && docker run --log-opt labels=applications,environment --restart unless-stopped --name ${{ vars.CONTAINER_NAME }} -e MANDACARU_POSTGRES_HOST=${{ secrets.MANDACARU_POSTGRES_HOST }} -e MANDACARU_POSTGRES_PORT=${{ secrets.MANDACARU_POSTGRES_PORT }} -e MANDACARU_POSTGRES_DB=${{ secrets.MANDACARU_POSTGRES_DB }} -e MANDACARU_POSTGRES_USER=${{ secrets.MANDACARU_POSTGRES_USER }} -e MANDACARU_POSTGRES_PASSWORD=${{ secrets.MANDACARU_POSTGRES_PASSWORD }} -e MANDACARU_SQL_INIT_MODE=${{ vars.MANDACARU_SQL_INIT_MODE }} -e MANDACARU_JWT_SECRET=${{ secrets.MANDACARU_JWT_SECRET }} -e MANDACARU_API_PORT=${{ vars.MANDACARU_API_PORT }} -p ${{ vars.MANDACARU_API_PORT }}:8080 -d ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api'
# - name: Deploy to Azure VM and run Docker
# run: ssh -o StrictHostKeyChecking=no -i private_key ${{ vars.AZURE_VM_USER }}@${{ vars.AZURE_VM_IP }} 'sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api || true && sudo docker stop ${{ vars.CONTAINER_NAME }} || true && docker rm ${{ vars.CONTAINER_NAME }} || true && docker run --log-opt labels=applications,environment --restart unless-stopped --name ${{ vars.CONTAINER_NAME }} -e MANDACARU_POSTGRES_HOST=${{ secrets.MANDACARU_POSTGRES_HOST }} -e MANDACARU_POSTGRES_PORT=${{ secrets.MANDACARU_POSTGRES_PORT }} -e MANDACARU_POSTGRES_DB=${{ secrets.MANDACARU_POSTGRES_DB }} -e MANDACARU_POSTGRES_USER=${{ secrets.MANDACARU_POSTGRES_USER }} -e MANDACARU_POSTGRES_PASSWORD=${{ secrets.MANDACARU_POSTGRES_PASSWORD }} -e MANDACARU_SQL_INIT_MODE=${{ vars.MANDACARU_SQL_INIT_MODE }} -e MANDACARU_JWT_SECRET=${{ secrets.MANDACARU_JWT_SECRET }} -e MANDACARU_API_PORT=${{ vars.MANDACARU_API_PORT }} -p ${{ vars.MANDACARU_API_PORT }}:8080 -d ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api'

deploy-production:
name: Deploy production environment to Azure VM
runs-on: ubuntu-latest
needs: push-to-registry
environment:
name: azure-production
url: https://api.mandacarubroker.com.br/docs
steps:
- name: Set up Azure CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# deploy-production:
# name: Deploy production environment to Azure VM
# runs-on: ubuntu-latest
# needs: push-to-registry
# environment:
# name: azure-production
# url: https://api.mandacarubroker.com.br/docs
# steps:
# - name: Set up Azure CLI
# uses: azure/login@v1
# with:
# creds: ${{ secrets.AZURE_CREDENTIALS }}

- name: Save SSH private key to file
run: |
echo "${{ secrets.SSH_PRIVATE_KEY }}" > private_key
chmod 400 private_key
# - name: Save SSH private key to file
# run: |
# echo "${{ secrets.SSH_PRIVATE_KEY }}" > private_key
# chmod 400 private_key

- name: Deploy to Azure VM and run Docker
run: ssh -o StrictHostKeyChecking=no -i private_key ${{ vars.AZURE_VM_USER }}@${{ vars.AZURE_VM_IP }} 'sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api || true && sudo docker stop ${{ vars.CONTAINER_NAME }} || true && docker rm ${{ vars.CONTAINER_NAME }} || true && docker run --log-opt labels=applications,environment --restart unless-stopped --name ${{ vars.CONTAINER_NAME }} -e MANDACARU_POSTGRES_HOST=${{ secrets.MANDACARU_POSTGRES_HOST }} -e MANDACARU_POSTGRES_PORT=${{ secrets.MANDACARU_POSTGRES_PORT }} -e MANDACARU_POSTGRES_DB=${{ secrets.MANDACARU_POSTGRES_DB }} -e MANDACARU_POSTGRES_USER=${{ secrets.MANDACARU_POSTGRES_USER }} -e MANDACARU_POSTGRES_PASSWORD=${{ secrets.MANDACARU_POSTGRES_PASSWORD }} -e MANDACARU_SQL_INIT_MODE=${{ vars.MANDACARU_SQL_INIT_MODE }} -e MANDACARU_JWT_SECRET=${{ secrets.MANDACARU_JWT_SECRET }} -e MANDACARU_API_PORT=${{ vars.MANDACARU_API_PORT }} -p ${{ vars.MANDACARU_API_PORT }}:8080 -d ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api'
# - name: Deploy to Azure VM and run Docker
# run: ssh -o StrictHostKeyChecking=no -i private_key ${{ vars.AZURE_VM_USER }}@${{ vars.AZURE_VM_IP }} 'sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api || true && sudo docker stop ${{ vars.CONTAINER_NAME }} || true && docker rm ${{ vars.CONTAINER_NAME }} || true && docker run --log-opt labels=applications,environment --restart unless-stopped --name ${{ vars.CONTAINER_NAME }} -e MANDACARU_POSTGRES_HOST=${{ secrets.MANDACARU_POSTGRES_HOST }} -e MANDACARU_POSTGRES_PORT=${{ secrets.MANDACARU_POSTGRES_PORT }} -e MANDACARU_POSTGRES_DB=${{ secrets.MANDACARU_POSTGRES_DB }} -e MANDACARU_POSTGRES_USER=${{ secrets.MANDACARU_POSTGRES_USER }} -e MANDACARU_POSTGRES_PASSWORD=${{ secrets.MANDACARU_POSTGRES_PASSWORD }} -e MANDACARU_SQL_INIT_MODE=${{ vars.MANDACARU_SQL_INIT_MODE }} -e MANDACARU_JWT_SECRET=${{ secrets.MANDACARU_JWT_SECRET }} -e MANDACARU_API_PORT=${{ vars.MANDACARU_API_PORT }} -p ${{ vars.MANDACARU_API_PORT }}:8080 -d ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api'
31 changes: 22 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,37 @@
# Mandacaru Broker - API
<h1 align="center"><img width="400px" src="docs/img/mandacarubroker-logo.webp"></h1>

## Descrição
<p align="center">
<strong>Projeto vencedor do <a href="https://mandacaru.dev">Mandacaru.dev</a> no Módulo Jandaia</strong>
</p>

O projeto Mandacaru Broker API é uma aplicação Spring Boot que visa simular o comportamento de um Home Broker de Ações.

Para saber mais, acesse a documentação do nosso ambiente de **produção**, que será utilizado no DEMO DAY: [nossa documentação Swagger - ambiente de produção](https://api.mandacarubroker.com.br/docs).

Caso deseje acessar a documentação do ambiente de **testes** para avaliar a segunda parte do desafio, recomendamos fortemente que você utilize o nosso ambiente de **testes**, em vez de rodar localmente a aplicação ou usar o ambiente de produção: [nossa documentação swagger - ambiente de teste](https://test-api.mandacarubroker.com.br/swagger-ui/index.html).
O projeto Mandacaru Broker API é uma aplicação Spring Boot que visa simular o comportamento de um Home Broker de Ações.

## Arquitetura da Solução

![Arquitetura da solução](./docs/img/architecture.png)

Foi utilizado um ambiente local com dois bancos instanciados por meio do `docker-compose.yml`.
## Fluxo de Trabalho

Para ambiente de desenvolvimento, foi utilizado um ambiente local com dois bancos instanciados por meio do `docker-compose.yml`.

Ao realizar a abertura de um pull request, o GitHub Actions é usado para rodar uma pipeline composta por build da aplicação, SonarCloud Quality Gate, checagem de padrão de linting com CheckStyle e execução de testes unitários e de integração.


<p align="center">
<img src="docs/img/ci.gif" width="700px" />
</p>

Passado nas checagens do pull request e feitas as revisões pelos membros da equipe, pode ser feito o merge do pull request. Novamente, é executado uma assessment de qualidade com o SonarCloud e é feita a implantação da aplicação utilizando ferramentas em nuvem (**AZURE**) e um workflow de deploy.

Nesse sentido, o workflow de deploy faz o build da imagem docker e push para o Docker Hub. Com isso, o GitHub Actions acessa a máquina virtual na azure e o container é implantado.
Nesse sentido, o workflow de deploy faz o build da imagem docker e push para o Docker Hub. Com isso, o GitHub Actions acessa a máquina virtual na Azure e dois containers são implantados.

<p align="center">
<img src="docs/img/cd.png" width="700px" />
</p>

O primeiro container é referente ao nosso ambiente de **produção**, que foi utilizado para desmonstração no DEMO DAY (09/03/2024): com [nossa documentação Swagger - ambiente de produção](https://api.mandacarubroker.com.br/docs).

Já o outro container foi do nosso ambiente de **testes**, utilizado para a avaliação do projeto. Esse ambiente foi utilizado como uma alternativa de rodar localmente a aplicação ou usar o ambiente de produção: [nossa documentação swagger - ambiente de teste](https://test-api.mandacarubroker.com.br/swagger-ui/index.html).

## Uso

Expand Down
Binary file added docs/img/cd.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/ci.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/mandacarubroker-logo.webp
Binary file not shown.
Binary file added docs/img/swagger.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/workflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9d2e789

Please sign in to comment.