diff --git a/README.md b/README.md index a3324ac..f6a4e23 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,44 @@ -# nubis-ci [![Build Status](https://travis-ci.org/nubisproject/nubis-ci.svg?branch=master)](https://travis-ci.org/nubisproject/nubis-ci) +# nubis-ci [![Build Status](https://travis-ci.org/nubisproject/nubis-ci.svg?branch=master)](https://travis-ci.org/nubisproject/nubis-ci) + +## CI Deployment +The Nubis CI project is designed to be deployed into a standard Nubis Account. It takes advantage of the standard deployment found [here](https://github.com/nubisproject/nubis-docs/blob/master/DEPLOYMENT_OVERVIEW.md). For further specifics about CI consult the Jenkins documentation [here](https://jenkins.io/doc/). + +The CI system is designed to run two basic jobs. The first job watches a single GitHub repository and builds a new AMI when that repository changes. It then runs the second job which deploys the AMI into the Stage environment. The second job can be triggered manually to deploy the AMI into the Prod environment. All deployments are applied using Terraform. + +### Deployment Diagram +![Deployment Diagram](media/Nubis_CI_Diagram.png "Deployment Diagram") + +**NOTE**: The line colors are representative and are for readability only. They are not intended to indicate any underlying protocol or specific communication details. + +### Deployment Notes +The CI deployment consists of: + - A single EC2 instance acting as a Jenkins server + - An Auto Scaling group to provide resiliency + - A S3 log bucket where backups and artifacts are stored + - An ELB to facilitate inbound connectivity + +### Deployment Resources +Details for the deployment including; naming conventions, relationships, permissions, etcetera, can be found in the [Terraform template](nubis/terraform/main.tf) used for deployment. Links to specific resources can be found in the following table. + +|Resource Type|Resource Title|Code Location| +|-------------|--------------|-------------| +|atlas_artifact|nubis-ci|[nubis/terraform/main.tf#1](nubis/terraform/main.tf#1)| +|tls_private_key|ci|[nubis/terraform/main.tf#19](nubis/terraform/main.tf#19)| +|tls_self_signed_cert|ci|[nubis/terraform/main.tf#26](nubis/terraform/main.tf#26)| +|aws_iam_server_certificate|ci|[nubis/terraform/main.tf#52](nubis/terraform/main.tf#52)| +|aws_elb|ci|[nubis/terraform/main.tf#68](nubis/terraform/main.tf#68)| +|aws_security_group|elb|[nubis/terraform/main.tf#102](nubis/terraform/main.tf#102)| +|aws_security_group|ci|[nubis/terraform/main.tf#130](nubis/terraform/main.tf#130)| +|aws_autoscaling_group|ci|[nubis/terraform/main.tf#169](nubis/terraform/main.tf#169)| +|aws_launch_configuration|ci|[nubis/terraform/main.tf#201](nubis/terraform/main.tf#201)| +|aws_route53_record|ci|[nubis/terraform/main.tf#236](nubis/terraform/main.tf#236)| +|aws_s3_bucket|ci_artifacts|[nubis/terraform/main.tf#245](nubis/terraform/main.tf#245)| +|aws_iam_instance_profile|ci|[nubis/terraform/main.tf#264](nubis/terraform/main.tf#264)| +|aws_iam_role|ci|[nubis/terraform/main.tf#272](nubis/terraform/main.tf#272)| +|aws_iam_role_policy|ci_artifacts|[nubis/terraform/main.tf#293](nubis/terraform/main.tf#293)| +|aws_iam_role_policy|ci_build|[nubis/terraform/main.tf#323](nubis/terraform/main.tf#323)| +|aws_iam_role_policy|ci_deploy|[nubis/terraform/main.tf#371](nubis/terraform/main.tf#371)| +|null_resource|credstash|[nubis/terraform/main.tf#488](nubis/terraform/main.tf#488)| ## Quick start 0. `git clone git@github.com:nubisproject/nubis-base.git` diff --git a/media/.~lock.Nubis_CI_Diagram.odg# b/media/.~lock.Nubis_CI_Diagram.odg# new file mode 100644 index 0000000..ea7977d --- /dev/null +++ b/media/.~lock.Nubis_CI_Diagram.odg# @@ -0,0 +1 @@ +,jason,nymeria.lan,15.12.2016 10:33,file:///home/jason/.config/libreoffice/4; \ No newline at end of file diff --git a/media/Nubis_CI_Diagram.odg b/media/Nubis_CI_Diagram.odg new file mode 100644 index 0000000..300c04e Binary files /dev/null and b/media/Nubis_CI_Diagram.odg differ diff --git a/media/Nubis_CI_Diagram.png b/media/Nubis_CI_Diagram.png new file mode 100644 index 0000000..907a659 Binary files /dev/null and b/media/Nubis_CI_Diagram.png differ