In this cap stone project, i deployed a dynamic car rental web application called Rentzone in AWS using CI/CD pipelines and GitHub Actions.
A Build is triggered in my pipeline when a git commit is pushed into my github repository, and below are the different jobs that is built in the pipeline.
(1) Configure AWS credentials; The first job configure AWS credentials for GitHub Actions to access and create resources in my AWS account.
(2) Build AWS infrastructure with terraform; The second job deploys infrastructure in AWS using Terraform and creates a VPC with public and private subnets, internet gateway, security groups, nat gateways, application load balancer, Rds instance, IAM role, S3 bucket, Record set in Route 53, Request and ssl certificate to encrypt data in transit, ECS cluster, ECS task defination and ECS service in auto scaling groups.
(3) Start self-hosted EC2 runner; After building the infrastructure in AWS, the next job in my pipeline starts a self-hosted runner and Create Amazon ECR repository to store the docker image for my application
(4) Build and push Docker image into ECR; The fourth job setup Docker on the self-hosted runner and build the image for my application and push the image to the Amazon ECR repository
(5) Create environment file and export to s3; The next job export environment variables for the fargate containers into a file and copy the file into the s3 bucket
(6) Migrate data into RDS database with Flyway; Parallel to the Job above, another job uses flyway to migrate the sql script for the application into Rds database
(7) Stop self-hosted EC2 runner; The next job terminates the self-hosted runner.
(8) Create new task definition revision; The eight job creates a new ECS task defination revison
(9) Restart ECS Fargate service; The last job in the pipeline uses the new revision of the ECS task defination to update the ECS service making the application available to end users
-
Deploying dynamic web applications in AWS using CI/CD pipelines and GitHub Actions
-
Utilizing core AWS services such as;
- VPC with public and private subnets
- Internet Gateway
- Security Groups
- Nat Gateway
- Application Load Balancer
- ECS Fargate
- ECR
- Route 53
- Auto Scaling Groups and more.
-
Containerizing applications with Docker and pushing the image to registries like Amazon ECR.
-
Building applications in AWS using infrastrucure as code tools like, TERRAFORM.
-
Migrating data for dynamic applications into RDS with tools like Flyway.
-
And finally, this project showcases my ability to secure and manage secrets with credential management tools like;
- AWS secrete manager and
- GitHub Actions repository secrets.
In summary, this project highlights my expertise with cloud service providers like: AWS and my familiarity with DevOps tools and processes such as;
- CI/CD pipelines
- GitHub Actions
- Linux
- Terraform
- Docker
- Git
- GitHub
- Bash Scripting
- AWS CLI
- Flyway
- and Visual Studio Code
Repository for GitHub Actions Project