Octopus Deploy

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.

Octopus Deploy
Developer(s) Octopus Deploy Pty. Ltd.
Stable release 3.3 / January 29, 2016; 8 years ago (2016-01-29)[1]
Operating system Windows 7, Windows Server 2008 or later
Type Release management software
License Proprietary commercial software
Website octopusdeploy.com

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.[2][3]

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.[4]

Usage

In a typical installation, a team would commit code to their existing source control system.[5] 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.[6][7]

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.[8][9]

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).[10]

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;[11] or,
  • Polling, in which the agent actively polls an Octopus Deploy server asking for jobs to do[12]

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.[13]

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.[14]

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,[15] but was later rescheduled for version 3.[15][16]

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” which 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).[17] The UI itself is built using AngularJS, and all functionality is performed using that REST API.[18]

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

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.[20] Red Gate Deployment Manager is based on the Octopus Deploy 1.0 architecture. Octopus Deploy development continues.[21]

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. 15.0 15.1 Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. Lua error in package.lua at line 80: module 'strict' not found.

External links