Overview | Built With | Infrastructure | Roadmap | Contributing
This project is aimed at automating the deployment process using Jenkins and AWS. It provides a seamless way to deploy applications by integrating Jenkins for continuous integration and delivery and leveraging AWS services for hosting and managing the application infrastructure.
This project was built using the following technologies:
- Jenkins - CI/CD tool for automating the deployment process
- Maven - Build automation tool used for managing the project's build lifecycle
- SonarQube - Open-source platform for continuous inspection of code quality
- Docker - Open platform for developing, shipping, and running containerized applications
- EC2 - IaaS service that provides secure, resizable compute capacity in the cloud
- ECR - Fully managed container registry that makes it easy to store, manage, share, and deploy Docker container images
- ECS w/ Fargate - Fully managed container orchestration service that makes it easy to run, stop, and manage Docker containers on a cluster
Our journey starts when the developer pushes the code to the repository. A webhook triggers the Jenkins pipeline, which is responsible for:
- 📥 Checking out the code from the repository
- 🛠️ Building the application w/ Maven
- ✅ Running unit tests
- 📑 Generating checkstyle reports w/ Maven
- 🔍 Running SonarQube analysis
- ✔️ Checking if the code meets the quality gate
- 🐳 Building the Docker image
- 🗂️ Pushing the Docker image to ECR
- 🚀 Deploying the application to ECS w/ Fargate
P.S: A notification is sent to the developer either on success or failure of the pipeline in Microsoft Teams.
- Use Terraform for infrastructure as code
- Add support for Kubernetes
Embracing collaboration is what fuels the heartbeat of the open-source community. Your contributions are not just welcomed but cherished.
Should you have ideas for improvement, we invite you to fork the repository and initiate a pull request. Alternatively, feel free to open an issue, labeled 'enhancement,' to share your insights.
- Fork the Project
- Create your Feature Branch (
git checkout -b feat/new-feature-name
) - Commit your Changes (
git commit -m 'feat: add some new feature'
) - Push to the Branch (
git push origin feat/new-feature-name
) - Open a Pull Request