-1

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.

Sandeepan Nath
  • 9,966
  • 17
  • 86
  • 144

1 Answers1

1

Sorry for getting back so late. Some of the features requested are not directly available ATM. However there are indirect ways of getting around them.

  1. "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)." You can have different deployment groups under the same application for the test and production instances

  2. There is no facility to pause a deployment in between steps to ask for manual confirmation. However, if you want the check fails to not stop the deployment, you can set a safe minimum healthy hosts criteria, and emit logs from all instances to cloud-watch to see detailed results per instance.

  3. There is no facility to pause a deployment after a batch has been completed. However you can manually introduce a bake period as a part of the deployment and abort the deployment if necessary.

I am sorry I could not help more with your use case. However I hope this helps.

Thanks