This project demonstrates a production-style end-to-end CI/CD pipeline for a Spring Boot Java application using Jenkins for CI and ArgoCD for GitOps-based CD on a Kubernetes cluster.
Java application code hosted on a Git repository
Jenkins server
Kubernetes Cluster
Install Kubectl
Install docker
SonarQube
Argo CD
-
Build and test
-
Static code analysis
-
Docker image creation & push
-
Kubernetes deployment via ArgoCD
Flow:
-
Language: Java (Spring Boot)
-
CI Tool: Jenkins
-
Code Quality: SonarQube
-
Containerization: Docker
-
Container Registry: Docker Hub
-
CD Tool: ArgoCD (GitOps)
-
Orchestration: Kubernetes (Minikube / EKS)
-
Cloud: AWS EC2
Manual deployments are slow, error-prone, and difficult to scale. This project automates the entire software delivery lifecycle using DevOps best practices and GitOps, ensuring:
-
Faster deployments
-
Consistent environments
-
Automated quality checks
-
Zero manual kubectl apply
The Spring Boot application is built using Maven.
mvn clean package
java -jar target/Spring-boot-web.jarDocker build and run:
docker build . -t ultimate-cicd:v1
docker run -d -p 8010:8080 ultimate-cicd:v1Jenkins pipeline performs:
-
Pull code from GitHub
-
Build with Maven
-
Run SonarQube analysis
-
Build Docker image
-
Push image to Docker Hub
-
Update Kubernetes deployment YAML with new image tag
Jenkins uses:
-
GitHub credentials
-
SonarQube token
-
Docker Hub credentials
-
Image tag is dynamically updated using Jenkins BUILD_NUMBER.
ArgoCD continuously monitors the Git repository for Kubernetes YAML changes.
When Jenkins updates the deployment file:
-
ArgoCD detects the change
-
Automatically syncs to Kubernetes
-
Deploys the new version
No manual deployment required.