This is a DevOps project for CI/CD (Continuous Integration and Continuous Delivery) of vprofile project on AWS Cloud using AWS CodeCommit, AWS CodeArtifact, AWS CodeBuild, AWS Systems Manager Parameter Store, SonarCloud, Amazon S3, AWS CodePipeline, Amazon SNS etc. This project is a continuation of vprofile-project-ci-aws project.
Link for vprofile app repository.
-
In an Agile SDLC, there will be Frequent Code Changes
-
Manual Code Deployment is Time Consuming
-
Developer and Testers not equipped with Ops Knowledge
-
Need to Hire Ops Professionals
-
Or Outsource
-
Dependency on Ops Team
-
CI/CD Server Maintenance
-
Operational Overhead to Maintain Servers like Jenkins, Nexus, Sonar, Git, QA Server for Testing
-
PaaS (Platform as a Service) and SaaS (Software as a Service) Cloud Services
-
Disposable Environment
-
Automate Cl/CD Process
-
Build, Test, Deploy and Test for Every Commit
-
Short MTTR (Mean Time to Recovery)
-
No Human Intervention
-
Fault Isolation
-
Agile
-
No Ops
-
AWS CodeCommit - Version Control System
-
AWS CodeArtifact - Maven Repository for Dependencies
-
AWS CodeBuild - Build Service from AWS
-
AWS CodeDeploy - Artifact Deployment Service
-
AWS CodePipeline - Service to Integrate all Jobs Together
-
Amazon S3 - Artifact Deployment
-
AWS Systems Manager Parameter Store - Hierarchical Parameters Storage
-
SonarCloud - SonarQube Cloud based Tool
-
Checkstyle - Code Analysis from Build Job
-
Selenium (Software Testing) - Code Build and Others
-
AWS Elastic Beanstalk - For Hosting Application
-
Amazon RDS - Database for Application Service
-
Amazon SNS - Notification Service from AWS
Services Used | In Comparison Of |
---|---|
AWS CodeCommit |
GitHub |
AWS CodeArtifact |
Nexus Sonatype |
AWS CodeBuild |
Jenkins Jobs |
SonarCloud |
SonarQube Server |
AWS CodePipeline |
Jenkins Pipeline |
Beanstalk Instances |
Tomcat VMs |
Amazon RDS |
MySQL VMs |
-
Login to AWS account - Link to Login to your AWS Account.
-
AWS CodeCommit
a. Create CodeCommit Repository
b. Sync it with Local Repository
-
AWS CodeArtifact
a. Create Repository
b. Update
settings.xml
file in Source Code Top Level Directoryc. Update
pom.xml
file with Repository Detailsd. Generate Token and Store in
SSM Parameter Store
-
Sonar Setup
a. Create Sonar Cloud account
b. Generate Token and Store in
SSM Parameter Store
c. Create Build Project
d. Update
CodeBuild
Role to accessSSM Parameter Store
-
Create Notifications for SNS or Slack
-
Build Project
a. Create Variables in
SSM Parameter Store
b. Create Build Project
-
Create Pipeline
a. CodeCommit
b. Test Code
c. Build
d. Deploy to S3 Bucket
-
Create Elastic Beanstalk and RDS
-
Update RDS Security Group
-
Deploy Database in RDS
-
Update
settings.xml
andpom.xml
files -
Create another Build Job to create artifact with buildspec file in repository
-
Create a Deploy Job to Elastic Beanstalk
-
Create a Build Job for Software Testing
-
Upload Screenshot to S3 Bucket
-
Update Pipeline
a. CodeCommit
b. Test Code
c. Build and Store
d. Deploy to S3 Bucket
e. Build and Release
f. Deploy to Elastic Beanstalk
g. Build Job for Selenium Test Scripts
h. Upload result to S3 Bucket
-
Test Pipeline