diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f2d5e89..6867bd5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -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' diff --git a/README.md b/README.md index e175556..208c82d 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,37 @@ -# Mandacaru Broker - API +

-## Descrição +

+ Projeto vencedor do Mandacaru.dev no Módulo Jandaia +

-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. + +

+ +

+ 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. + +

+ +

+ +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 diff --git a/docs/img/cd.png b/docs/img/cd.png new file mode 100644 index 0000000..ff417de Binary files /dev/null and b/docs/img/cd.png differ diff --git a/docs/img/ci.gif b/docs/img/ci.gif new file mode 100644 index 0000000..dce73cf Binary files /dev/null and b/docs/img/ci.gif differ diff --git a/docs/img/mandacarubroker-logo.webp b/docs/img/mandacarubroker-logo.webp new file mode 100644 index 0000000..b64e997 Binary files /dev/null and b/docs/img/mandacarubroker-logo.webp differ diff --git a/docs/img/swagger.png b/docs/img/swagger.png new file mode 100644 index 0000000..477ec6b Binary files /dev/null and b/docs/img/swagger.png differ diff --git a/docs/img/workflow.png b/docs/img/workflow.png new file mode 100644 index 0000000..57a0302 Binary files /dev/null and b/docs/img/workflow.png differ