I am exploring the approach of using Jenkins to trigger the build process and bring the required git branch to an Amazon S3 bucket and then trigger an AWS Codedeploy deployment to take it from there to deploy on the relevant instances.
Architecture and use cases
- We have multiple EC2 instances behind a load balancer.
- Sometimes, some of the instances may need to be deployed with a different git branch (to test some feature, before rolling out on all instances and this may need to be kept during subsequent deployments).
- While there are multiple git branches deployed across multiple set of instances, we may need to deploy some other branches on them, depending on their current branches.
Features to be supported
During deployment, provision to do some checks on each individual instance of a deployment group and display the instances on which the same failed and then ask for manual confirmation and proceed accordingly. I am assuming that there is a possibility that one or more of the instances have something different and some check made by one of the scripts fails (with reference to options provided in the appspec file). I would not want it to cause a build failure, but would like to see a report of that, in the AWS deployment dashboard preferably, and it should wait for manual intervention to decide whether to proceed.
provision to have intervals between deployment on batches of instances within a single deployment group and ask for manual confirmation to proceed. I already know about this feature “Deployment Config” which specifies the number of instances to deploy at a time can be configured - e.g. halfatatime. However, we have this process of waiting for a few minutes after deploying on a batch of, say 10 boxes, then manually monitor load and proceed if everything is fine. This is done manually.