DevCalc é uma API REST desenvolvida em Java com Spring Boot que oferece operações matemáticas simples. O projeto tem como objetivo fornecer uma interface programática para realizar cálculos básicos de forma rápida e eficiente.
- Java
- Spring Boot
- Maven (ferramenta de build)
- Spring Web MVC (para criar API REST)
O projeto utiliza Apache Maven como ferramenta de build e gerenciamento de dependências. Maven facilita a compilação, empacotamento e execução do projeto através de comandos simples.
- Java 11 ou superior instalado
- Maven instalado (ou usar o wrapper incluído)
Os comandos aqui aplicam-se se você estiver usando Maven diretamente. Se estiver usando o wrapper do Maven (mvnw), substitua mvn por ./mvnw.
-
Clone o repositório
git clone <https://github.com/Shyuu7/devcalc-api.git> cd DevCalc
-
Compile o projeto
mvn clean install
-
Execute a aplicação
mvn spring-boot:run
-
Outros comandos úteis:
- Para compilar o projeto sem executar os testes:
mvn clean install -DskipTests
- Para executar os testes:
mvn test- Para empacotar a aplicação em um arquivo JAR:
mvn package
- Para executar o JAR gerado:
java -jar target/devcalc-0.0.1-SNAPSHOT.jar
- Para limpar os arquivos compilados:
mvn clean
Esta seção documenta o processo de containerização da aplicação DevCalc utilizando Docker e Docker Compose.
- Docker instalado
- Docker Compose instalado
Executar apenas a API:
- Pull da imagem do Docker Hub:
docker pull shyuu7/devcalc:latest
- Executar o container:
docker run -d -p 8080:8080 shyuu7/devcalc:latest
Executar ambiente completo com Docker Compose:
- Clone o repositório:
git clone https://github.com/Shyuu7/devcalc-api.git cd devcalc-api - Iniciar os serviços:
docker-compose up -d
- Verificar os containers em execução:
docker ps
- Parar os serviços:
docker-compose down
- Parar e remover todos os containers, redes e volumes:
docker-compose down -v
Esta seção documenta o processo de deploy da aplicação DevCalc em um cluster Kubernetes.
- Kubernetes cluster configurado
- kubectl instalado e configurado
- Namespace
tp2criado no cluster
- Criar o namespace (se não existir):
kubectl create namespace tp2- Aplicar o arquivo de configuração do Kubernetes:
kubectl apply -f k8s/devcalc-deployment.yaml -n tp2- Aplicar o serviço para expor a aplicação:
kubectl apply -f k8s/devcalc-service.yaml -n tp2- Verificar o status do deployment:
kubectl get deployments -n tp2
kubectl get pods -n tp2
kubectl get services -n tp2- Acessar a aplicação (A aplicação estará disponível no NodePort 30003):
http://<node-ip>:30003Esta seção documenta todos os workflows de CI/CD implementados no projeto usando GitHub Actions.
Arquivo: hello.yml
Trigger: Push em qualquer branch
Função: Workflow básico que imprime "Hello CI/CD" para demonstração inicial do GitHub Actions.
Arquivo: maven-ci.yml
Trigger: Push na branch main
Função: Compila o projeto Spring Boot usando Maven com JDK 21, executando mvn clean install -DskipTests.
Arquivo: tests.yml
Trigger: Pull Request
Função: Executa testes automatizados quando um PR é aberto, garantindo qualidade do código antes do merge.
Arquivo: java-matrix-test.yml
Trigger: Push na branch main
Função: Testa a aplicação em múltiplas versões do Java (11 e 17) usando matrix strategy, garantindo compatibilidade.
Arquivo: release-deploy.yml
Trigger: Publicação de release no GitHub
Função: Executa deploy automatizado para produção quando uma nova release é publicada.
Arquivo: env-demo.yml
Trigger: Push em qualquer branch
Função: Demonstra o uso de variáveis de ambiente no GitHub Actions, exibindo DEPLOY_ENV=staging.
Arquivo: secret-demo.yml
Trigger: Push na branch main
Função: Demonstra o uso seguro de secrets do GitHub, utilizando a variável API_KEY de forma protegida.
Arquivo: deploy.yml
Trigger: Push na branch main
Função: Pipeline de deploy sequencial em múltiplos ambientes (dev → staging → prod), usando variáveis de ambiente específicas para cada estágio e mascaramento de credenciais sensíveis.
O projeto implementa uma pipeline completa de CI/CD que:
- Integração Contínua: Compila e testa o código a cada push/PR
- Compatibilidade: Verifica funcionamento em múltiplas versões do Java
- Deploy Automatizado: Realiza deploy quando uma release é publicada
- Segurança: Gerencia secrets e variáveis de ambiente de forma segura
Todos os workflows podem ser visualizados na aba Actions do repositório.
A URL de acesso varia dependendo do método de execução:
- URL: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui/index.html
- URL: http://<node-ip>:30003
- Swagger UI: http://<node-ip>:30003/swagger-ui/index.html
Você pode testar os endpoints usando:
- Swagger UI - Interface web disponível na página principal
- Curl - Comandos HTTP via terminal
- Postman - Cliente REST gráfico
- Container de teste - Para verificar conectividade interna
curl -X GET "http://localhost:8080/api/calc/sum?a=5&b=3" -H "accept: application/json"