Can we control Manual Intervention Step?

Does Octopus offer the following functionality, or perhaps has some workarounds for these?

  • Execute manual intervention step based on some variable produced by previous steps. We need this to ask confirmation if something is not completely right.
  • Run deployment from API with “automatically confirm” manual intervention step option enabled. We need this to make our scripts trigger deployments and not block on manual intervention step, but still to require confirmation from staff when deployment being done from UI.

For the latter we can skip manual intervention deployment step, but perhaps there is some other option?
And for the former, I’m not sure this is possible, but we’d be very happy to have it.

Hi Dmitry,

Thanks for getting in touch!

Unfortunately, its not possible to conditionally run a manual intervention step based on an output variable of a previous step. However, this is not the first time someone has asked about it, so we have a feature request on our UserVoice site - feel free to drop by and vote for it.

Regarding manual interventions when triggered via the API/UI - if you are using octo.exe to create and deploy your releases, there is a --skip option to both create-release and deploy-release that will allow you to skip the manual intervention step when triggered via automation.

Hope that helps!

Cheers,
Matt

Thanks Matt for the answer.

I would propose to extend manual intervention steps to answer not only continue/stop answers, but to have more form fields, some typed input fields, with validation perhaps. This step might serve as a dialog requesting additional info from the person controlling deployment.

Hi Dmitry,

Thanks for your suggestion - I see you’ve cross-posted it on UserVoice too. The team regularly reviews UserVoice and suggestions like this really help us to make a better product.

Cheers,
Matt

Instead of using a manual step, replace it a step to run a script and you have likely limitless control over what happens. The verbiage you will have in the script depends on which conditions you want to prompt an intervention. Here’s an example:

During a deployment, in step 1 I pause a service named “Pokemon Go Async” on PoGoServer01 and I disable “PoGoHide” service on the same server. I want to have an intervention in step 2 to pause the rest of the deployment while I wait for Async tasks to finish on my database “PoGoSQL01”. Meanwhile, I want to send out an email to people who care that PoGoHide service is disabled and Pokémon Go Async is paused.

In this scenario, I would write the following powershell script and target the PoGoServer01 application server:

#this may require downloading of the SQLPS module in order to query SQL
if(!(get-module Microsoft.EnterpriseManagement.Core.Cmdlets)){Import-Module SQLPS}

#send an email
$smtpServer = “outlook.PoGo.com
$from = “Development Team E-CVG-PoGoDevTeam@PoGo.com
$to = "E-CVG-PokemonHelpers@PoGo.Com"
$subject=“Pokemon Go Service Paused/Disabled”
$body ="All,

Pokemon Go Async service has been paused and PoGoHide service has been disabled on PoGoServer01.

These services will remain in this state while a new increment of PoGo Hide is released.


Thanks,


PoGo Development Team

"
Send-Mailmessage -smtpServer $smtpServer -from $from -to $to -subject $subject -body $body -bodyasHTML -priority High
#end of send an email

#server, query, database information
$SQLserver = “PoGoSQL01”
$Query = “SELECT count (*)
FROM [asyncQueue] with (nolock)
where status = 'Inprocess’
and (asyncQueueProcessID = 33)”
$Database = “PoGoAsync”

#gather info from sql, if async is empty then continue, if 10 mins has passed
#then ask user if they want to kill the service
do {
$async = Invoke-Sqlcmd -serverinstance $SQLserver -database $database -query $Query
$number = $async.Column1
if($number -gt “0”){
Write-Host "$($number) jobs remain in async. Another update will come in 30 seconds"
Start-Sleep -Seconds 30
$tenminutes = $tenminutes + 1
if($tenminutes -gt “20”){$killservice = Read-Host -prompt “$($number) jobs remain in async, would you like to stop the async service?(yes/no):”}
if($killservice -eq “yes”)
{
Stop-Service -DisplayName “Pokemon Go Async”
$end = “yes”
}
}
if($number -eq “0”){$end = “yes”}
}while($end -ne “yes”)

Notice:

This issue has been closed due to inactivity. If you encounter the same or a similar issue and require help, please open a new discussion (if we asked for logs or extra details in this thread, consider including them in the new thread). If you are the creator of this thread and believe it should not be closed let us know via our support email.