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

  1. GitHub will integrate using web-hooks with a deployed Jenkins server (autoscaled)
  2. Jenkins will utilize CloudFormation to deploy infrastructure, and will publish build artifacts to an S3 bucket or similar service such as ArtiFactory.
  3. 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

  1. All code and artifacts should be put into a single GitHub repository, unless pulling in code from external sources.
  2. Document your code layout and build process
  3. Document how to deploy, update, and destroy the running service using CloudFormation or similar orchestration.
  4. Document settings and tuning needed to ensure graceful failover.
  5. Ensure that sensitive data and configs are kept separate from code and artifacts, in keeping with 12 Factor standards.
  6. Document the configuration needed to integrate with outside services.

Demonstration

  1. Demonstrate building the site in various configurations, in particular one for Development, and one for Staging or demoing new site features.