In Octopus Deploy, how do I skip manual Interventions in child projects?

Imagine we had an application with two components, a website, and a database. A change to the database doesn’t necessarily mean a change to the website. An index could be added, a stored procedure could be updated to be more efficient. A change to the website doesn’t necessarily mean a change to the database. A .css file could be updated or a tweak to the react code. You shouldn’t have to deploy the database if you just want to update the website and vice versa. One way to set this up is to have a project for each component. And then use the deploy a release step as a traffic cop. The traffic cop project is only used when you need to deploy to testing/staging/production. The build servers automatically build and trigger a release to development.

The website can be deployed without using the master project, so you place a manual intervention step in the process.

When the traffic cop project is used, you want the manual interventions to happen there.

However, when you do that, the manual interventions in the child projects will still fire. How can we skip them?

By using run conditions and sending down variables.

When using the deploy a release step you can send variables down to the child projects. In this case, we are sending down the value of the person who did the approval for the database Octopus.Action[DBA Approve Release].Output.Manual.ResponsibleUser.EmailAddress into the variable Project.Approval.ExternalApprover.

In the child project’s manual intervention step, we can use a run condition that checks for that variable. If the variable is not present then require the manual intervention step to run. If the variable is present then skip the manual intervention step.

Doco:

Happy deployments!