Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: src/layouts/Default.astro
pubDate: 2023-01-01
modDate: 2024-12-02
modDate: 2026-05-25
title: Manual intervention and approval step
icon: fa-solid fa-check
description: Manual intervention and approvals allow a human to review, approve, or sign off on deployments.
Expand Down Expand Up @@ -40,7 +40,30 @@
- Run the manual intervention based on the status (success or failure) of the previous step.
- Wait for the previous step to complete.
- Run based on the value of a variable expression.
8. Save the deployment process.
8. Save the deployment process.

## When the deployment pauses

The point at which a deployment or runbook run pauses depends on how the manual intervention step is positioned in the deployment process:

### As a standalone step**

The deployment pauses after all currently executing parallel steps have completed. Once the intervention is handled, the deployment may need to wait for a task cap slot to become available before it resumes.

### As a child step**

A manual intervention can be configured as a child step nested inside another step. In this case:

- The deployment does **not** pause at the task level — the task slot remains active while waiting for intervention.
- The deployment will not progress to subsequent child steps until the intervention is handled.

The exception is when the manual intervention is the **last child step** of a parent step with no associated deployment target (i.e., the parent is not part of a rolling deployment). In that case, the deployment pauses in the same way as a standalone step.

:::div{.hint}
When a manual intervention pauses the deployment task, it frees the task slot for other work. When the deployment is ready to resume, it will wait for an available task cap slot, which may introduce a delay before it continues.

When a manual intervention does not pause the deployment task, the task slot remains in use while awaiting intervention. If multiple deployments are held at manual interventions simultaneously, they can exhaust all available task cap slots and prevent new tasks from starting.
:::

## Assigning manual interventions

Expand All @@ -52,7 +75,7 @@

You can click **Show details** to view the instructions.

If you are in the team of users that can take responsibility for the interruption, you'll also be able to assign the interruption to yourself by clicking **Assign to me**.
If you are in the team of users that can take responsibility for the interruption, you'll also be able to assign the interruption to yourself by clicking **Assign to me**.

:::div{.hint}
Interruptions can only be assigned to one person at a time to prevent two people from accidentally performing the manual step.
Expand All @@ -73,20 +96,21 @@
| Variable name | Contains | Example value |
| --- | --- | --- |
| `Octopus.Action[Step Name].Output.Manual.Notes` | The contents of the *Notes* field from the interruption form | *Checked with Rick, got the all-clear; Michelle is out at a meeting.* |
| `Octopus.Action[Step Name].Output.Manual.Approved` | Indicates if the step was approved | *True*
| `Octopus.Action[Step Name].Output.Manual.Approved` | Indicates if the step was approved | *True* |
| `Octopus.Action[Step Name].Output.Manual.ResponsibleUser.Id` | The user ID of the user who submitted the interruption form | *users-237* |
| `Octopus.Action[Step Name].Output.Manual.ResponsibleUser.Username` | The username of the user who submitted the interruption form | *j_jones* |
| `Octopus.Action[Step Name].Output.Manual.ResponsibleUser.DisplayName` | The display name of the user who submitted the interruption form | *Jamie Jones* |
| `Octopus.Action[Step Name].Output.Manual.ResponsibleUser.EmailAddress` | The email address of the user who submitted the interruption form | *jamie.jones@example.com* |

Check failure on line 103 in src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md

View workflow job for this annotation

GitHub Actions / lint

Bare URL used

src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md:103:145 MD034/no-bare-urls Bare URL used [Context: "jamie.jones@example.com"] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md034.md

## Evaluating manual intervention output in following steps

If you want to control subsequent steps based on the outcome of the manual intervention step, you can use "Variable: only run when the variable expression is true", and use the `Octopus.Deployment.Error` variable as the conditional. For example:

```

Check failure on line 109 in src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md

View workflow job for this annotation

GitHub Actions / lint

Fenced code blocks should have a language specified

src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md:109 MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md040.md
#{unless Octopus.Deployment.Error}RESULT IF MANUAL INTERVENTION PROCEEDED{/unless}
```

Check failure on line 111 in src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md

View workflow job for this annotation

GitHub Actions / lint

Fenced code blocks should be surrounded by blank lines

src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md:111 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md031.md
or
```

Check failure on line 113 in src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md

View workflow job for this annotation

GitHub Actions / lint

Fenced code blocks should have a language specified

src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md:113 MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md040.md

Check failure on line 113 in src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md

View workflow job for this annotation

GitHub Actions / lint

Fenced code blocks should be surrounded by blank lines

src/pages/docs/projects/built-in-step-templates/manual-intervention-and-approvals.md:113 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md031.md
#{if Octopus.Deployment.Error}RESULT IF MANUAL INTERVENTION WAS ABORTED{/if}
```

Expand Down
Loading