﻿# Deployments

> Let's deploy!

Great deployments are stress-free deployments. They should be non-events that ‘just work’ without the need for sign-off from multiple gatekeepers.

You can use Octopus to deploy anything, anywhere. Whether it’s [Kubernetes](/docs/deployments/kubernetes), [Linux](/docs/infrastructure/deployment-targets/linux/), or [Windows](/docs/deployments/windows) virtual machines, [Amazon Web Services](/docs/deployments/aws), [Azure](/docs/deployments/azure), or [Google Cloud](/docs/deployments/google-cloud), if Octopus can speak to it via our Tentacle agent, SSH, command-line, or a web service, Octopus can deploy to it.

## Why deploy with Octopus?

Octopus models deployments in advanced ways, letting you tame complexity at scale. 

Octopus is about more than just automating your existing deployment process. It has features that streamline the complex aspects of deployments, where manual and scripted deployments often fail.

Deploying software with Octopus involves [packaging your applications](/docs/packaging-applications/) and [configuring your infrastructure](/docs/infrastructure/). With those two completed, you’ll use the following features to complete your deployment setup in Octopus.

### Deployment process
The Octopus [deployment process](/docs/projects/deployment-process/) lets you define all the tasks needed to deploy your software. The process acts like a deployment checklist, making sure each task gets completed before proceeding to the next one.

Critically, unlike a manual checklist, Octopus never forgets to run a step and always completes them in the correct order.

:::figure
![Octopus deployment process](/docs/img/shared-content/concepts/images/deployment-process.png)
:::

### Steps
Octopus provides a library of [pre-built step templates](/docs/projects/steps) for deployment tasks, offering a simpler configuration experience by separating scripts and API calls. 
These steps can be easily added to processes, with configurations allowing for conditions based on environments, channels, previous steps, or package acquisition. Options include running steps in parallel or sequence, setting time limits, and configuring retries for failed steps. 

:::figure
![Octopus process step templates](/docs/img/deployments/octopus-step-templates.png)
:::

There's also a [community library](https://library.octopus.com/) with over 500 step templates, so you can complete tasks without coding. You can still create custom script steps or develop your own custom step templates for use across projects.

#### Guided failure mode and step retries
You can configure deployments to fail in Octopus when there’s an error. Guided failure mode and step retries are alternative options to outright failing the deployment.

[Guided failure](/docs/releases/guided-failures) mode pauses the deployment when a step fails and lets you retry the failed step (after fixing any errors if needed), skip it, or fail the deployment.

When switched on, step retries re-attempts to run the failed step 3 times before it gives up and fails the deployment. This is useful when there's a temporary network issue and the destination is temporarily unavailable.

### Variables
Octopus [variables](/docs/projects/variables/) let you apply the correct variables easily during a deployment. Octopus can manage simple values, secrets, and accounts as variables.

:::figure
![Octopus variables](/docs/img/shared-content/concepts/images/variables.png)
:::

You can scope variables by:

- Environments
- Deployment target tags
- Deployment targets
- Deployment processes and steps
- Channels

### Releases
A [release](/docs/releases/) in Octopus is a snapshot of the deployment process and assets at creation, ensuring consistency in deployments. Changes to assets don't affect existing releases. 

Tenant variables get excluded, so it's easier to onboard new tenants without needing a new release.

## Getting started with deployments

Use the navigation to discover deployment examples for different types of applications and technologies using Octopus. It also includes [common deployment patterns and practices](/docs/deployments/patterns).
