Parallel steps, each with rolling deployment

I found some discussions on parallel rolling deployment with child steps. My situation is simpler, and maybe I can find a simple answer.

Let’s assume I have three steps:

  • Deploy Service 1
  • Deploy Service 2
  • Deploy Service 3

Each one is deployed on the same set of five machines:

  • Host 1
  • Host 2
  • Host 3
  • Host 4
  • Host 5

Services are absolutely independent of each other, so they can be deployed in parallel. I can choose “Run in parallel with the previous step” in deployment process settings, and all 3*5 = 15 deployments happen simultaneously (OctopusBypassDeploymentMutex is set to True).

But things get weird when I turn on rolling deployment. I expect each service to be deployed on one host at a time. Services are still independent of each other, so they can be deployed in parallel:

  1. (Service1 to Host1) + (Service2 to Host1) + (Service3 to Host1)
  2. (Service1 to Host2) + (Service2 to Host2) + (Service3 to Host2)

Instead, parallelism is entirely gone:

  1. (Service1 to Host1)
  2. (Service1 to Host2)
  3. (Service2 to Host1)
  4. (Service2 to Host2)

As you can see, this is much slower. Do you have any solution for my problem?

Hi Alexey,

Thanks for reaching out. The nature of rolling deployments is they need to run each step on a machine before starting on the next. It is not possible to run multiple rolling deployments/child steps, even if the belong to different parents(which is what you are trying to do). Rolling Deployments are designed to wait until all rolling deployments have been done on the machines, before starting on the next. Its not on our plans to support this scenario for child steps for multiple reasons on expected behavior in the differing scenarios such as skipped steps, failed steps and which step above is it supposed to run on in those scenarios.

In this case you are gonna have to choose between parallelism (5*3) or Rolling Deployment(one step at a time).

Sorry for the bad news.

Dalmiro

Let me explain:

  1. Yesterday I had a large powershell script that deployed everything one step at a time and took 1 hour to finish.
  2. I set up an entirely parallel deployment via Octopus, it takes 5 minutes, yay.
  3. I enable rolling deployment in Octopus.
  4. Today I have a large powershell script hidden inside Octopus web interface that deploys everything one step at a time, takes 1 hour to finish. And I’m supposed to pay $5000 for this.

This is disappointing.

Hi Alexey

Sorry for your frustration.

As I said in the Octopus 3.0 forum, by all means add it as a request. It’s not the way Octopus works today, but we may add / change it in the future. It’s not a scenario that comes up very often.

Regards

Damian