Our software development team is always looking for ways to optimize the development process so we can focus more on coding new features and spend less time doing repetitive tasks that can be automated.
As part of these efforts, we have been working in a smooth CI/CD (Continuous Integrations / Continuous Delivery) pipeline that automates all the processes that happen when a change in the code is committed to our GitHub repos so those changes are built, tested, and deployed on our servers.
We currently host all our code in GitHub and all of the software infrastructure in AWS (with exception of some 3rd party integrations).
We can look at the admin dashboard as an example. It is hosted in an Amazon S3 bucket and served using a CloudFront distribution. This is where we describe the process that takes place each time a change in the code is committed to the related GitHub repository.
Every time a change is committed in the code to the admin dashboard repository in GitHub, AWS CodePipeline gets a notification from GitHub and triggers a new build using AWS CodeBuild. E2E automated testing is done once the build is finished. If all the tests pass, then the build is deployed to an Amazon S3 bucket. When the admins open the admin dashboard, they are directly accessing the files from that S3 bucket but we use AWS CloudFront to add an extra layer of security and to distribute the bucket contents to the closest possible server to the user (in order to lower latencies).
During this entire process, AWS EventBridge and AWS SNS create and deliver notifications to the development team regarding the status of each automated build and its deployment.
You can see how the CI/CD process works in the video below. (Apologies about the audio quality, some of us are not well experienced or equipped for audio recording yet).