We’ve been using Octopus deploy for about 2 months now, and are really happy with it in general, it really helps visualize the status across multiple applications, versions and tenants.
One thing I’ve been struggling with, is the parallel deployment tasks configuration, I’ve read the documentation here, but as far as I understand it, it’s only possible to configure the number of parallel tasks from the Octopus server perspective.
So we have 2 main applications, with about 50 tenants each (so ~100 deployments). For these applications we have 3 internal testing environments: Alpha, beta and staging. These environments relate to various stages of our release process. For each of these environments we have a dedicated pretty beefy AWS EC2 instance running.
Every night we build our 2 applications, and they have to deployed to each tenant in the alpha environment, in a ‘worst-case scenario’ (depending on the stage of our release cycle) we might have beta and staging builds for either of the 2 applications as well, which also have to be deployed to their respective environments, again for all tenants. In this worst-case scenario we would have to do ~300 deployments during the night, which ideally should be finished before ~9AM so our employees can investigate any errors which might have happened.
A single deployment of one application to one tenant, can range anywhere from 5 minutes to several hours, since it involves loading large data sets, which vary from tenant to tenant. I am fully aware that this is a completely different scenario as your run-of-the-mill .net or Java web application, but it is what it is and for the time being we have to deal with it.
The alpha/beta/staging EC2 instances are spec’ed to deal with about ~5 simultaneous deployments, and we can scale them to finish on time if we get more tenants over time.
However I can’t seem to configure Octopus to run these 5 deployments over the 3 deployment targets continously. I’ve set OctopusBypassDeploymentMutex
to true on both projects, but e.g If I first start an alpha deployment, Octopus will start 5 simultaneous deployment tasks on the alpha deployment target, and queue the deployments for the remaining 45 tenants.
Then, f I start a beta deployment of the same project (or of another project, doesn’t really matter), instead of also starting the 5 deployment tasks on the beta deployment target, all 50 deployments will just be added to the end of the queue. So from a deployment target perspective, the deployments are performed sequentially, and not in parallel.
We’re not at a stage where we’re using Octopus to deploy to acceptance/production environments (which our customers have access to), but it’s definitely something we are planning to do, but that would mean a production deployment (which would be on a customer-specific EC2 instance and thus deployment target) could be blocked because Octopus has queued deployments to our internal testing environments, which is definitely not what we want.
I really hope I’m missing something, is it possible to configure Octopus the way I want?