Automated Continuous Integration - huit/cloud-boot-camp GitHub Wiki
Description
This exercise engineers a continuous integration build process that deploys a website service to dev, test, stage, or production automatically based on a commit to a particular git repo branch in GitHub. ideally this will be the same website service as developed in an earlier exercise.
Features of Solution
The solution will automatically deploy a horizontally scaled website in AWS, implementing the above architecture.
Architectural features
- GitHub will integrate using web-hooks with a deployed Jenkins server (autoscaled)
- Jenkins will utilize CloudFormation to deploy infrastructure, and will publish build artifacts to an S3 bucket or similar service such as ArtiFactory.
- A Full build instigated by Jenkins will produce a full running service, including a relevant CNAME but with an optional CloudFront layer.
Deployment features
Build the Jenkins server with the same considerations as in the first exercise.
Documentation
- All code and artifacts should be put into a single GitHub repository, unless pulling in code from external sources.
- Document your code layout and build process
- Document how to deploy, update, and destroy the running service using CloudFormation or similar orchestration.
- Document settings and tuning needed to ensure graceful failover.
- Ensure that sensitive data and configs are kept separate from code and artifacts, in keeping with 12 Factor standards.
- Document the configuration needed to integrate with outside services.
Demonstration
- Demonstrate building the site in various configurations, in particular one for Development, and one for Staging or demoing new site features.