Esta é uma aplicação backend para a gestão de vagas, desenvolvida com o foco na integração de ferramentas modernas de monitoramento, análise de qualidade de código, identificação de erros, e automação de processos de build e deploy.
- Spring Boot: Framework principal para o desenvolvimento do backend.
- PostgreSQL: Banco de dados relacional.
- SonarQube: Ferramenta de análise de qualidade de código e identificação de problemas.
- Prometheus e Grafana: Soluções para monitoramento e visualização de métricas em tempo real.
- Docker e Docker Compose: Para containerização e gerenciamento de serviços.
- GitHub Actions: Pipeline CI/CD para automação de build e deploy.
-
Documentação da API: Utilizando Swagger, a API possui endpoints documentados de forma clara, facilitando os testes e a integração.
-
Monitoramento: A aplicação está integrada com Prometheus e Grafana para monitoramento em tempo real. Métricas como uso de CPU, tempo de atividade e requisições HTTP são capturadas e exibidas em painéis interativos.
-
Análise de Qualidade de Código: O SonarQube analisa o código, detectando bugs, problemas de segurança e sugerindo melhorias. O dashboard fornece relatórios completos de qualidade.
-
Testes Automatizados: A aplicação foi desenvolvida com suporte a testes unitários e de integração. Endpoints como o de cadastro de candidatos foram implementados com validações detalhadas.
-
Pipeline CI/CD Automatizado: Com o GitHub Actions, todo o processo de build, testes, e deploy ocorre automaticamente após um push para o branch
main
. Isso reduz erros manuais e acelera o ciclo de entrega.
Certifique-se de ter as seguintes ferramentas instaladas:
Crie um banco de dados PostgreSQL com as informações de conexão que serão usadas no arquivo application.properties
.
Preencha o arquivo src/main/resources/application.properties
com as seguintes informações:
# Configuração da aplicação
spring.application.name=gestao_vagas
# Configuração do banco de dados
spring.datasource.url=jdbc:postgresql://<HOST>:<PORT>/<DATABASE>
spring.datasource.username=<USUARIO>
spring.datasource.password=<SENHA>
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update
# Segurança
security.token.secret=<CHAVE_SECRETA>
token.sonar=<TOKEN_SONARQUBE>
# Endpoints de monitoramento
management.endpoints.web.exposure.include=health,prometheus,metrics
management.endpoints.enabled-by-default=false
management.endpoint.metrics.enabled=true
management.endpoint.health.enabled=true
management.endpoint.health.show-details=always
management.endpoint.prometheus.enabled=true
Substitua <HOST>
, <PORT>
, <DATABASE>
, <USUARIO>
, <SENHA>
, <CHAVE_SECRETA>
e <TOKEN_SONARQUBE>
pelos valores do seu ambiente.
-
Suba os serviços de monitoramento com Docker Compose:
docker-compose up -d
-
Compile e execute a aplicação com Maven:
./mvnw clean install ./mvnw spring-boot:run
-
Acesse o Swagger para testar os endpoints:
http://localhost:8080/swagger-ui/index.html
-
Certifique-se de que o SonarQube está em execução:
- Acesse
http://localhost:9000
e verifique se o serviço está ativo.
- Acesse
-
Gere um token no painel do SonarQube e configure-o no
application.properties
ou passe-o diretamente no comando abaixo. -
Execute a análise com Maven:
mvn clean verify sonar:sonar \ -Dsonar.projectKey=gestao_vagas \ -Dsonar.host.url=http://localhost:9000 \ -Dsonar.login=<SEU_TOKEN_SONARQUBE>
-
Acompanhe o relatório no painel do SonarQube, em
http://localhost:9000/dashboard?id=gestao_vagas
.
-
Acesse o painel do Prometheus para visualizar métricas:
http://localhost:9090
-
Acesse o painel do Grafana para gráficos e visualizações:
http://localhost:3000
Credenciais padrão:
- Usuário:
admin
- Senha:
admin
(alterar após o primeiro login)
- Usuário:
O projeto possui um workflow automatizado de CI/CD configurado no GitHub Actions. Toda vez que um git push
é realizado no branch main
, o pipeline executa:
- Build e Testes: Compilação da aplicação e execução dos testes automatizados.
- Containerização: Criação de uma imagem Docker e upload para o Docker Hub.
- Deploy Automatizado: Início de um novo container no ambiente de produção.
Fique à vontade para abrir issues ou enviar pull requests no repositório para melhorias e sugestões. Feedbacks são sempre bem-vindos!