Harman Patil (Editor)

Octopus Deploy

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Website
  
octopus.com

Developer(s)
  
Octopus Deploy Pty. Ltd.

Stable release
  
3.11 / March 3, 2017; 15 days ago (2017-03-03)

Operating system
  
Windows 7, Windows Server 2008 or later

Type
  
Release management software

License
  
Proprietary commercial software

Octopus Deploy is an automated software deployment and release management server. It is designed to simplify deployment of ASP.NET applications, Windows Services and databases.

Contents

Octopus Deploy is used to deploy applications securely to servers that are on-premises or in the cloud. It has a web-based interface, which can be used to modify and execute deployments, and a dashboard that teams can use to view the status of deployments.

Usage

In a typical installation, a team would commit code to their existing source control system. A continuous integration server would then compile the code and run unit tests. The last step of the build process would be to bundle the binaries, content files and configuration files into a package that is ready to be deployed.

Octopus is then designed to deploy this package, and promote it between environments. For packaging applications, Octopus Deploy uses the NuGet package file format from Microsoft.

Architecture

To perform deployments to remote machines, Octopus relies on a software agent called Tentacle, which is a Windows service that runs on the machines that applications will be deployed to (web and application servers, for example).

In order to communicate in different network configuration scenarios, the Tentacle agent can be installed in one of two modes:

  • Listening, in which the agent is a TCP listener and listens for connections from the Octopus Deploy server; or,
  • Polling, in which the agent actively polls an Octopus Deploy server asking for jobs to do
  • In either configuration, Octopus uses an SSL connection with both client and server certificates. During installation a two-way trust relationship is established, ensuring that the Octopus server only sends commands to a Tentacle that it trusts, and that the Tentacle only accepts commands from an Octopus server that it trusts.

    Deployment orchestration

    Users can define multiple environments, such as test, staging and production environments, and multiple projects that will be deployed. Each project has a "deployment process" that specifies the steps that should be taken when deploying.

    Examples of a deployment process might be:

    1. Run a PowerShell script to stop an application server and back up a database
    2. Deploy an ASP.NET web application package, and update IIS
    3. Deploy and reconfigure a Windows Service package

    Deployment processes can also include manual steps (approvals), which allow a deployment to pause for a human to intervene before the deployment continues.

    Support for Linux deployments via a tentacle running on Mono was scheduled for version 2, but was later rescheduled for version 3.

    Configuration management

    To handle differences between environments, Octopus Deploy allows users to define "variables", either as part of each project, or (as of Octopus 2.0) in "libraries" that are shared between projects.

    Variable values can be scoped to environments; for example, a SQL database connection string might have different values depending on the environment being deployed to. Variables can also be marked as "sensitive", which results in them being encrypted and removed from any log entries.

    REST API

    Octopus Deploy 2.0 included a complete overhaul of the user interface (UI) and back end, making the application "API first". The Octopus Deploy server presents a REST API in which all functionality in the UI can be performed (this is built in C# using the Nancy Web framework). The UI itself is built using AngularJS, and all functionality is performed using that REST API.

    A C# client library is also available on NuGet for consumers of the REST API.

    Octopus and Red Gate deployment manager

    In July 2012, Red Gate purchased the rights to fork Octopus Deploy to use as a baseline for the product that would later become Red Gate Deployment Manager. Red Gate Deployment Manager is based on the Octopus Deploy 1.0 architecture. Red Gate Deployment Manager was retired October 1, 2015. Octopus Deploy development continues.

    References

    Octopus Deploy Wikipedia