Octopus Deploy
Developer(s) | Octopus Deploy Pty. Ltd. |
---|---|
Stable release | 3.3 / January 29, 2016[1] |
Operating system | Windows 7, Windows Server 2008 or later |
Type | Release management software |
License | Proprietary commercial software |
Website |
octopusdeploy |
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:
- Run a PowerShell script to stop an application server and back up a database
- Deploy an ASP.NET web application package, and update IIS
- 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
- ↑ Octopus Deploy Pty. Ltd. "Octopus Deploy 3.3". Octopus Deploy.
- ↑ JAMES SMITH (January 29, 2013). "AUTOMATED RELEASE MANAGEMENT FOR .NET WITH OCTOPUSDEPLOY". Retrieved 29 January 2014.
- ↑ "Be a better developer: Octopus Deploy". Mindscape. Retrieved 29 January 2014.
- ↑ Adam Prendergast (15 Aug 2013). "Octopus Deploy". Retrieved 29 January 2014.
- ↑ "Effective continuous deployment with TeamCity, Octopus Deploy and PowerShell". 15 May 2013. Retrieved 29 January 2014.
- ↑ "Octopus in your delivery process". Retrieved 29 January 2014.
- ↑ "Octopus Deploy 2.0 Review". Retrieved 29 January 2014.
- ↑ "How the Motley Fool Uses Octopus Deploy". September 6, 2012. Retrieved January 29, 2014.
- ↑ "Packaging applications". Retrieved 29 January 2014.
- ↑ Maarten Balliauw, Xavier Decoster (2013). Installing and Confguring a Tentacle. 183: Apress. ISBN 1430260025.
- ↑ "Listening Tentacles". Retrieved 29 January 2014.
- ↑ "Polling Tentacles". Retrieved 29 January 2014.
- ↑ "Build Status and Deploy Button with a Raspberry Pi, Octopus and CruiseControl.net". Retrieved 29 January 2014.
- ↑ "Octopus Deploy Command Line Tools". Retrieved 29 January 2014.
- 1 2 "Linux deployments?". octopusdeploy.com.
- ↑ Octopus Deploy Pty. Ltd. "Roadmap and upcoming features". Octopus Deploy.
- ↑ "Convention-based HTTP API on top of Nancy (with documentation!)". 25 Jun 2013. Retrieved 29 January 2014.
- ↑ "Octopus 2.0 UI: Angular, Grunt and responsiveness". 16 Aug 2013. Retrieved 29 January 2014.
- ↑ "Octopus 2.0 UI: Angular, Grunt and responsiveness". Retrieved 29 January 2014.
- ↑ "Octopus Deploy and Red Gate's Deployment Manager". Retrieved 29 January 2014.
- ↑ "Octopus Deploy & Red Gate Deployment Manager". Retrieved 29 January 2014.