Manual Deployments - RFC

Published on: 30 Nov 2012

With retention policies out of the way, the next big feature I'm working on in Octopus is manual deployments.

While fully automated deployment is a great goal, not every step in a deployment can be automated, and sometimes a human needs to get involved. Production deployments may require:

  • Getting sign off/approval before a deployment
  • A human checking that the homepage of a newly deployed site works before making it live
  • Performing a database upgrade or updating some infrastructure in an environment where you're not allowed to automate the steps (e.g., you have to deliver your database changes to a DBA to be manually reviewed and run)
  • Getting sign off/approval after a deployment completes

So far in Octopus, the only 'steps' in a deployment that we've supported is NuGet package deployment. We're now introducing a new kind of step, a 'manual step', which can be used to handle these scenarios.

Adding a manual step

When you create a manual step, you'll enter some instructions which will be presented to a user to follow. You'll also select a group that the user must belong to. For example, if you need approval from a manager, create a 'Managers' group with the right users, and then select that group.

Details of a manual step

During deployment, when your manual step is encountered, the deployment will enter a 'paused' state. If someone from the approval group is looking at the page, they'll see a screen with the options to proceed with or cancel the deployment:

Proceed or cancel

They can also enter notes which will be stored along with the deployment. For example if the approval is not given, a manager might use the notes to explain why.

Once someone from the group 'proceeds' with the deployment, the deployment task will be re-queued and run.

Resuming the deployment

Another scenario that this feature supports is the idea of pre-uploading packages, since packages will be uploaded to Tentacles before the first manual step is encountered.

I'd love to get your feedback on this feature and what you've seen above, and if you think there's any other options/features missing. A suggestion I saw was to send an email to the approval group when the manual step is encountered, which I think is a good suggestion (though it might be implemented using a different, "send email" step instead). What else would you change about this feature?