I am working with a client that is 100% windows. I am helping them with their first AWS project.
Our current setup is below:
Source Code Repo: Git hosted in Visual Studio Online
Build Server: Jenkins hosted in AWS
AMI Creation
We use Packer to bake the AMI. We have a base image along with a web server image.
AMI has AWS code deploy agent and other application dependencies.
Provisioning
We use terraform to provision our infrastructure. All the terrafrom/packer configurations are stored in a separate project in Git.
We use Git flow
when a developer checks in their code it is checked into a feature branch. They make pull request and it is approved it gets merged into Dev branch. Jenkins builds the project, runs unit tests and static code analysis using SonarQube.
If there are no failures the application is deployed to the integration testing environment.
If integration testing is successful release admin approves and Jenkins deploys the application to QA environment.
Our deployments are performed using AWS code deploy. Jenkins AWS CodeDeploy plugin makes it easy. It loads the artifacts into S3 bucket.
AWS Code deploy integrated with auto scaling groups as well.
We haven't done a lot of testing yet but in our initial testing everything is working.
We haven't provisioned our production environment yet. We want to do blue green deployments.
We want to implement immutable infrastructure where we want to bake AMI's with application and code in it.
We also want to automate AMI creation process. AWS sends SNS notifications whenever new Windows AMI's are released.
We don't use Consul at this time.
Atlas will give us centralized configuration management, it will also help orchestrate packer/terraform etc.
I was wondering if anyone has made the similar transition.
Jenkins has worked well for us so far. I am trying to determine what role Jenkins will play if we start using Atlas.
We are moving from Visual studio online git to Github.
Any suggestions are welcome.