Parallel Manual Intervention Steps should fail when one fails

Hi there,

I am having a problem setting up approval steps for a project. The basic idea is to have say two Manual Intervention Steps execute in parallel. However I would like it if either of these steps are failed (ie the Abort button is clicked instead of the Proceed one) and the other has yet to receive a response…then BOTH steps fail and the deployment stops.

Currently if one step fails, and the other is yet to complete, we must wait for the second manual intervention step (run in parallel) to also either succeed or fail before the entire deployment will move on – and more importantly, fail!

Further muddying the waters is the fact that of the two parallel manual intervention steps, if one is aborted is actually shows as a “successful” Task in the task summary…until that is the project execution leaves the parallel group. Only then does the step change to failed, and the deployment actually fails.

I can send pictures if you need me to of this problem in action…

Brad

Also, I have tried attaching a parallel script block executing looping powershell code, polling for changes in the status of the manual intervention steps. Something like the below powershell, but it just doesn’t work (again due to the fact that Task/Step status doesn’t actually update properly until execution leaves the parallel grouping)…

$continue = $true
while($continue) {
Start-Sleep -s 5
$qa = $OctopusParameters[‘Octopus.Step[Manual QA Approval].Status.Code’]
$po = $OctopusParameters[‘Octopus.Step[Manual PO Approval].Status.Code’]
if(($qa -eq “Failed”) -or ($po -eq “Failed”)) { $continue = $false }
}

Regards,
Brad

Hi Bradley,

Thanks for getting in touch! Unfortunately there is no way for Octopus to be able to run steps in parallel that affect a currently running step.
The more we know about what you are trying to create the better we can help.

Are you able to provide us with some more information as to why you require a setup like this?
Can you give me a planned scenario of how this would work when it is finished?

Hopefully with this information we can help you find a good solution.

Regards,
Daniel

Thanks for the response Daniel,

I am trying to run manual intervention steps in parallel. we need QA and the Product Owner to sign off on a release before it moves to production; but don’t care in what order they sign off. I have also created a FlowDock integration (via PowerShell script steps) that updates an Inbox Thread with the status/state of these approvals.

The problems arise when either one fails (manual intervention step gets aborted), I don’t want to have to wait for the approval/denial of the other step before fully failing the deployment; and for that matter, wait to update FlowDock.

Bottom-line, I think the FlowDock integration issue goes away if we could just get parallel steps to abort once one of their brother parallel steps have failed. Specifically, when these steps are Manual Intervention ones!

· As you can see the workflow is simply Parallel Steps (two of which are manual intervention steps)
[cid:image001.jpg@01D1B4D5.7EDA3B40]

· When the workflow is executed, as expected I see two notifications that the deployment has been paused for the approvals
[cid:image003.jpg@01D1B4D5.7EDA3B40]

· Here QA has aborted their approval, and yet the deployment is still stuck waiting for PO to approve/deny as well (it should take only one to deny a deployment!)
[cid:image005.jpg@01D1B4D5.7EDA3B40]

· Notice it’s weird that manual interventions flag as completed successfully, however their actual Octopus.Step[name of step].Status.Codes will still be set to “Running”!

Brad Long
Heartland x7683

image005.jpg

image001.jpg

image003.jpg

After more thought Daniel,

Really what I’d like to have, is the ability to apply powerhell code (before and) after a manual intervention step, much like how the Deploy NuGet Package steps optionally work. Ideally this would allow for some sort of mechanism that could execute code conditionally based on the final outcome or result of the manual intervention prompt (ie Proceed vs Abort being clicked).

I would feel that this is a pretty common use-case, as many organizations/teams will have multiple code signoffs before being production worthy. It feels kludgy that we have to wait for the results of all manual interventions to come in, when it should only take ONE abort to fail a deployment!

Brad Long
Heartland x7683

From: Long, Bradley (Brad)
Sent: Monday, May 23, 2016 9:29 AM
To: ‘Daniel Fischer’ tender2+dc540fc345@tenderapp.com
Subject: RE: Parallel Manual Intervention Steps should fail when one fails [Problems #45991]

Thanks for the response Daniel,

I am trying to run manual intervention steps in parallel. we need QA and the Product Owner to sign off on a release before it moves to production; but don’t care in what order they sign off. I have also created a FlowDock integration (via PowerShell script steps) that updates an Inbox Thread with the status/state of these approvals.

The problems arise when either one fails (manual intervention step gets aborted), I don’t want to have to wait for the approval/denial of the other step before fully failing the deployment; and for that matter, wait to update FlowDock.

Bottom-line, I think the FlowDock integration issue goes away if we could just get parallel steps to abort once one of their brother parallel steps have failed. Specifically, when these steps are Manual Intervention ones!

· As you can see the workflow is simply Parallel Steps (two of which are manual intervention steps)
[cid:image001.jpg@01D1B50E.973F9070]

· When the workflow is executed, as expected I see two notifications that the deployment has been paused for the approvals
[cid:image002.jpg@01D1B50E.973F9070]

· Here QA has aborted their approval, and yet the deployment is still stuck waiting for PO to approve/deny as well (it should take only one to deny a deployment!)
[cid:image003.jpg@01D1B50E.973F9070]

· Notice it’s weird that manual interventions flag as completed successfully, however their actual Octopus.Step[name of step].Status.Codes will still be set to “Running”!

Brad Long
Heartland x7683

image005.jpg

image001.jpg

image003.jpg

Hi Bradley,

Sorry for the late reply here, I had a chat to the devs and they informed me that this will not currently be possible in Octopus.
However, you can create a UserVoice suggestion for it and vote/comment. With enough community support we could look at adding this in.
https://octopusdeploy.uservoice.com/

Again, sorry for the late reply and any disruption that may have caused to your work.

Regards,
Daniel