This section provides an overview of Octopus Deploy concepts and links to the relevant documentation, which explore the concepts further and guides you through implementing them with your own self-hosted Octopus server or the hosted version Octopus Cloud.
As an Octopus user, you define the process for deploying your software. You specify the environments the applications are deployed to and who on your team can deploy to which environments. For instance, you might want developers to deploy to dev environments but not testing or production, and members of QA to deploy to test environments, but not to production. Taking this approach means that even if different members of the team trigger deployments, the deployment process remains consistent. After releases have been created, they can be deployed as many times as you need.
Octopus Deploy Server
The installation documentation provides instructions for downloading, installing, and configuring your self-hosted Octopus Deploy server.
Octopus Cloud is the hosted version of Octopus Deploy. We designed Octopus Cloud and self-hosted Octopus to provide the same functionality; however, there are some minor differences, for instance, with Octopus Cloud, we're responsible for taking backups, upgrading the service, and maintaining and monitoring the underlying systems.
Learn more about Octopus Cloud.
The Octopus Web Portal
Whether you're self-hosting the Octopus server or using Octopus Cloud, the Octopus Web Portal is where you manage your infrastructure, projects, access the built-in repository, grant your team access to projects, and create your automated deployments.
Octopus Deploy organizes your deployment targets (the machines and services you deploy software to) into groups called environments. Typical environments are development, test, and production.
With Octopus Deploy your deployment targets can be Windows servers, Linux servers, Microsoft Azure, AWS, Kubernetes Clusters, Cloud Regions, or an Offline Package Drop.
Organizing your infrastructure into environments lets you define your deployment processes (no matter how many steps, environments, or deployment targets are involved) and have Octopus deploy the right versions of your software, with the right configuration, to the right environments at the right time.
Learn more about managing your infrastructure.
Before you can deploy software with Octopus Deploy, you need to bundle all the files required for the software to run into a supported package. The package must be versioned and stored in a repository. Octopus Deploy includes a built-in repository. We recommend configuring your existing tool chain to push packages automatically to the built-in repository or an external feed; however, you can push packages manually to the repository if you choose to.
Octopus Deploy is designed to work with teams following agile software development methodologies, that is, continuously deploying software, iterating, making changes, and redeploying.
The deployment process that Octopus executes is like a recipe for deploying your software. You define the recipe by adding steps and variables to a project. Octopus Deploy provides a range of built-in step templates that can be included in your deployment processes, you can also use steps from the community-contributed step template library, and even create your own custom steps. Each step contains a specific action (or set of actions) that is executed as part of the deployment process each time your software is deployed. After the initial setup, your deployment process shouldn't change between deployments even though the software being deployed will change as part of the development process.
If you're a large organization with lots of teams working in Octopus, from 2019.1 you can use the Spaces feature to provide each of your teams with a space for the projects, environments, and infrastructure they work with, while keeping other team's assets separate in their own spaces.
Learn more about Spaces.
The Delivery Pipeline
We designed Octopus Deploy for teams that follow agile delivery practices. A typical workflow could be:
Commit Code to Your Existing Source Control System.
You might be using Git, Team Foundation Server, Subversion, or Mercurial. The choice is yours.
Your CI/Build Server Compiles the Code and Runs Unit Tests.
You might be using TeamCity, Jenkins, Bamboo, Azure DevOps, Team Foundation Server (TFS), or CruiseControl.NET. Again, the choice is yours.
Package Your Application.
When the build is ready, your CI/build server takes all the files your software needs to run and bundles them up ready for deployment.
Octopus Deploy Deploys Your Software to Your Infrastructure.
Octopus deploys your software to the infrastructure you've configured, whether this is on-premises servers or cloud services. Because you likely want to deploy your software into a testing environment before deploying into production, Octopus promotes releases of your software through your environments, for instance, to dev, testing, staging, and production, and because each environment has slightly different configurations, Octopus manages those for you too.