This repository demonstrates a comprehensive Continuous Integration and Continuous Deployment (CI/CD) setup using popular DevOps tools, emphasizing a GitOps approach. The tech stack includes AWS, Kubernetes (K8s), ArgoCD, Jenkins, SonarQube, Maven, Docker, and DockerHub.
- /spring-boot-app: Contains the source code of the application.
- /spring-boot-app-manifests: Includes Kubernetes deployment manifest files.
While GitOps best practices often recommend separate repositories for code and manifests, this project takes a deliberate approach by consolidating both in a single repository. The intention is to simplify the learning experience, especially for beginners, and highlight the integral role of Argo CD in the continuous deployment process.
- Developer's Commit: Developers commit their code to the GitHub repository.
- Jenkins Pipeline Trigger: A Jenkins CI/CD pipeline is triggered automatically through the GitHub webhook.
- Code Analysis with SonarQube: The pipeline performs code analysis using SonarQube to ensure code quality.
- Maven Build: Maven is utilized to download required packages, build the application, and generate artifacts.
- Docker Containerization: The application is containerized using Docker, and the Docker image is built.
- DockerHub Push: The Docker image is pushed to DockerHub, ensuring availability and versioning.
- ArgoCD Image Updater: ArgoCD's image updater component updates the image name in the repository.
- ArgoCD Deployment: ArgoCD, the continuous delivery tool, orchestrates changes in the Kubernetes deployment based on the new image.
If you are interested in deploying this setup, follow the detailed step-by-step guide in this Medium Article This repository serves as a blueprint for implementing a GitOps-centric CI/CD pipeline, promoting automation and efficiency in the software delivery process. Feel free to customize and extend it based on your specific project needs.