Released: Wednesday, November 24, 2021

What's new in 2021.3

These are the most important features you'll get by upgrading.

Octopus 2021.3


Built-in support for Amazon's Elastic Container Service (ECS) will make your ECS deployments easier. Our opinionated UI step guides you through the setup and builds the CloudFormation template, so you don't have to write configuration files or custom scripts.

This release includes some other noteworthy updates:

  • We delivered a new TypeScript API client for Octopus Deploy.
  • The Config as Code early access preview (EAP) is available to all customers.
  • Try our new Visual Studio Code extension that supports the Octopus Configuration Language (OCL) for Config as Code.
  • The Terraform Provider for Octopus Deploy supports script modules, tenant variables, and Worker Pools.
  • We improved our Go API client and TeamCity plugin for Octopus Deploy.
  • Octopus Cloud supports Azure AD, Google, and Okta as authentication providers, alongside Octopus ID.

Read our blog post to learn more.

Breaking changes

This release includes 3 breaking changes.

New default behavior for GET machines/{id}/tasks

We added runbook run activity to the deployment target screen. In support of this change, GET machines/{id}/tasks now returns both deployments and runbook runs. You can specify a type parameter to filter the results: Deployment or RunbookRun.

Learn more about this change in the GitHub issue.

Recommended version of Mono to run Calamari

Calamari can execute on the Mono framework. We recommend 5.14.0 as the minimum version of Mono for running Calamari.

Learn more about this change in our SSH target requirements documentation.

Recommended version of the Octopus .NET API client

We recommend 11.3.3453 as the minimum version of the Octopus .NET API client for interacting with Octopus Server 2021.3.

Customers who use the Octopus .NET API client to work with teams, roles, and permissions must use version 11.3.3453 of the client (or newer) to ensure compatibility with Octopus Server 2021.3.7491 and newer.

Learn more about this change in the GitHub issue.

Release notes

Changes in Octopus Server 2021.3.13150

  • 7723 - Make automatic release creation more performant for instances with a large number of projects

Changes in Octopus Server 2021.3.13144

  • 7719 - The message bus QueryNotificationObserver will backoff when the SQL Server is not reachable

Changes in Octopus Server 2021.3.13140

  • 7644 - Improved performance of viewing variable sets
  • 7690 - Reduced number of ids per request when retrieving resources via /all?ids
  • 7658 - Added a retry policy with exponential delay when fetching the message bus sequence number to avoid logging too many messages
  • 7677 - Added page size control to releases page

Changes in Octopus Server 2021.3.13021

  • 7427 - Fixed an issue where Octopus Server would not start when the license is expired

Changes in Octopus Server 2021.3.12944

  • 7559 - The health of unavailable SSH targets is once again being recorded correctly

Changes in Octopus Server 2021.3.12928

  • 7578 - Fixed an issue where release retention would fail if more than 2100 projects exist

Changes in Octopus Server 2021.3.12920

  • 7577 - Bugfix for SQL error thrown when creating tenant deployment with a ProjectView permission scoped to 100's of projects

Changes in Octopus Server 2021.3.12914

  • 7534 - File and git cache cleanup no longer runs under the task cap
  • 7562 - Fix whitespace tenant variable values being considered missing
  • 7563 - Fix long tenant variable values being considered missing
  • 7567 - Fixed the Full Table Cache to update stale data that was not detected in some rare conditions

Changes in Octopus Server 2021.3.12856

  • 7553 - Fixed the Full Table Cache to update stale data when rolling back a transaction

Changes in Octopus Server 2021.3.12846

  • 7435 - Sql timeout deleting from DeploymentRelatedMachine - RelatedDocumentStore.PopulateDeploymentRelatedMachines

Changes in Octopus Server 2021.3.12842

  • 7154 - Fixed duplicated variable when importing projects with import/export

Changes in Octopus Server 2021.3.12778

  • 7323 - URL escaping percentage sign in branch name

Changes in Octopus Server 2021.3.12768

  • 7518 - Improve performance of apply retention policies task
  • 7522 - Fixed issue with missing tenant variables showing for projects or environments not linked

Changes in Octopus Server 2021.3.12725

  • 7516 - Enforce ProjectEdit permissions when editing Git Projects

Changes in Octopus Server 2021.3.12714

  • 7501 - Trust the SQL Server certificate by default

Changes in Octopus Server 2021.3.12694

  • 7496 - Improve tenant missing variable performance
  • 7486 - Fixed an issue where switching to a branch with a / character in the name would cause the portal to redirect the user to the default branch
  • 7477 - Fixed scheduled deployments creating phantom server tasks and releases

Changes in Octopus Server 2021.3.12646

  • 7475 - Project data is refreshed only when deployment process is saved successfully

Changes in Octopus Server 2021.3.12605

  • 7071 - Release versioning will only be updated when the step associated is updated, and better validation to prevent versioning package step changes to the referenced package
  • 7448 - Sync the deployment settings in portal once deployment process is saved successfully

Changes in Octopus Server 2021.3.12582

  • 7451 - Fix task logs not being deleted when a deployment or runbook run is deleted

Changes in Octopus Server 2021.3.12534

  • 7281 - Active Directory authentication will now correctly login users when forms authentication and Sign in with a domain options are used

Changes in Octopus Server 2021.3.12461

  • 7287 - Bugfix: Let's Encrypt Integration Task failing with 'Object reference not set to an instance of an object'
  • 7074 - Kestrel web server configured with HTTPS now starts on Windows
  • 7420 - Update project overview page to be more performant and load variables-missing endpoint asynchronously
  • 7418 - Fix Dynamic Extension script loading

Changes in Octopus Server 2021.3.12372

  • 7392 - Fixed an issue with the Execution Location on version controlled actions occasionally displaying incorrectly
  • 7179 - Deployments that are executing or queued will no longer be cleaned up by release retention, and tasks must be completed or cancelled in order to delete them
  • 7304 - Fix automatic release creation (ARC) skipping channel version rule checks

Changes in Octopus Server 2021.3.12355

  • 7344 - Resolved an issue where viewing a deployment process for a version controlled project can create an audit entry

Changes in Octopus Server 2021.3.12313

  • 7385 - Fixed an issue where Release create/modify weren't storing the audit diffs correctly
  • 7389 - Null commits and commits messages will no longer cause /api/<space>/packages to return 500s
  • 7390 - Reverted changes to the Deployment.Changes data, so it goes back to being retained by default
  • 7369 - Fixed an issue with Jira integration blocking release creation when integrating with Jira Server
  • 7371 - Fixed an issue where Structured Configuration Variables were not correctly applying to XML files
  • 7374 - The /api/users/{id}/spaces endpoint has been updated such that it wont cause thread starvation or deadlocks
  • 7283 - Release versioning selection for steps with multiple package references now works as expected
  • 7290 - Retrieve release/runbook snapshot variable snapshot via releases/{id}/variables and runbookSnapshots/{id}/variables instead of querying all variables
  • 7324 - Updating a Certificate from Tenanted to Untenanted deployment mode without removing associated tenants doesn't save
  • 7263 - Add an associated space label for the Space Managers on Test Permissions Page
  • 7351 - Fixed worker pool properties not displaying correctly when using Action Templates on config-as-code projects
  • 71 - Include Tenant name in Jira Environment DisplayName
  • 6972 - Fixed SQL timeout on the api/events endpoint
  • 6794 - Fixed an issue where Structured Configuration Variables were failing to correctly process XML files without the *.xml file extension (eg *.config)
  • 7177 - Fixed an issue where Structured Configuration Variables were failing to correctly process .properties files, and instead treating them as .yaml files

Changes in Octopus Server 2021.3.12132

Breaking Changes
  • 7338 - Tentacle retention policy will inherit from previous phase instead of lifecycle. Phase UI now shows the correct inherited retention policies
Other Changes
  • 7350 - Fixed an issue where large amounts of Build Information data could cause high CPU and network load

Changes in Octopus Server 2021.3.12120

  • 7330 - Fixed an issue where projects could not be configured with existing config-as-code files
  • 7294 - Bug fix - ensure save button is enabled when switching between container images in step editor
  • 7329 - Fixed git schema migrations requiring ProjectEdit permissions
  • 7317 - Runbook environment selection does not include project default lifecycle
  • 6972 - Fixed SQL timeout on the api/events endpoint
  • 6257 - Auto-deploy triggers now consider environments from all lifecycles included in a project
  • 7295 - Fixed a very specific scenario where lines were not being written to task logs
  • 7321 - /api/spaces used to support ids query params
  • 7255 - Deployments will no longer go to incorrect tenants if options are changed during loading
  • 7217 - File verification on the Octopus Server the installation folder will check for the correct files
  • 7280 - Testing an external docker feed targeting the dockerhub registry will now show an error when credentials are incorrect
  • 7302 - Correctly parse valid certificates which have varying amounts of whitespace
  • 7313 - Addressed an issue where a "Branch has not been initialized" error could appear on certain version controlled projects
  • 7310 - Increased performance on tenant variable endpoints
  • 7176 - Fixed a bug where whitespace input characters could be trimmed when typing into a MultiSelect
  • 49 - Authentication returns an error when certain LDAP groups contain a '#' or other characters that are escaped in DNs
  • 7143 - LdapAuthenticationProvider now handles escaped special characters such as '#' in group names
  • 7041 - Prevent an internal component unmounted message being shown as an error to users
  • 7301 - Open redirect vulnerability in Octopus Server
  • 7173 - Fixed a UI issue where an infinite loading indicator could be displayed instead of a project loading error
  • 7299 - Server that was idle for more than an hour would delete message bus cursors. When they were recreated, the message that caused them to be recreated may not have been handled. This has been known to affect issues like ARC
  • 7253 - Errors that occur in offline package drop steps no longer silently fail
  • 7296 - Fixed worker pool related properties occasionally disappearing in version controlled projects
  • 7246 - Speed up cloning a step, filtering tenants and testing permissions by retrieving project summaries instead of full details
  • 7297 - SQL Aliases can be used again for server connection strings
  • 7293 - Fixed an issue where audit links in overflow menus would result in page not found errors
  • 7289 - Fix dependency issue causing telemetry server tasks not to run
  • 7221 - Cannot select channel grouping filter
  • 7282 - Fix an issue where the YAML editor on the Deploy Kubernetes container step changes the feed name to an ID
  • 7288 - Fix dependency issue causing some server tasks not to run
  • 7285 - Fixed a bug where links in overflow menus would not navigate to the correct location
  • 7273 - Correctly filter Certificates on the UI when there are more than 15
  • 7271 - Fixed an error that was preventing the replacement of a corrupted master key
  • 7227 - Display correct latest release for each channel when "Discrete channel releases" is enabled
  • 7277 - Lifecycles no longer clear on UI when enabling ARC
  • 7270 - Lock trace logs are once again directed to the system log rather than the task log
  • 7261 - role parameter now functions correctly on the GET /variables/preview endpoint
  • 7197 - Fixed importing a project (using Bento) with WorkItems such as Jira issues in commit messages
  • 7031 - Tasks can now be filtered by date
  • 7257 - Cloud Region targets can now be filtered from Infrastructure dashboard
  • 7279 - Fix for redundant SQL meta-data queries being run per transaction
  • 7262 - BuildInformation endpoint falls back to use default space when enabled
  • 7245 - Fix modified scoped user roles not being updated immediately in multi-node setup
  • 7247 - Fixed bug that caused deployment settings to be reset when updating project settings of a version controlled project
  • 7145 - Migrate the nancy team membership to ASP.NET Core
  • 7178 - Raw task log no longer extends outside of its container
  • 7242 - Fixed an issue where renaming a Runbook step where the name was the same as a step in the Deployment Process would cause "resource not found" errors when navigating through a project
  • 7166 - The /api/workerpools filters by the specified ids query parameter once more
  • 7256 - Message bus event deletion now dynamically reduces the number of events dropped if a timeout occurs
  • 7250 - Message bus event deletion now dynamically reduces the number of events dropped if a timeout occurs
  • 7003 - Self-signed Certificates are now correctly saved as tenanted if the option is selected
  • 7259 - Support converting a project to version controlled using an uninitialized git repository
  • 7130 - Fixed "Stack empty" error when deploying multiple releases in parallel
  • 7248 - Propagate changes to user identities in external auth providers to all cluster nodes
  • 7215 - Fixed a bug with the display of the table cells on dashboard page
  • 6963 - Package feed used in ARC must be a builtIn feed
  • 7196 - Fixed an issue where some Project pages without a branch selector would show a "No git resource" error if the last selected branch was deleted
  • 7182 - Fixed LastUpdatedTime when doing Deployment ServerTasks
  • 7244 - Service Message Parsing (This time for sure)
  • 6842 - Tool acquisition on workers and deployment targets no longer blocks other actions from running
  • 7236 - Show loading message instead of Missing Resource when loading teams in a manual intervention step
  • 7237 - Speeding up progression endpoint
  • 7238 - Fixed an issue where changes made to the the Deployment Settings for a version controlled project via the frontend would sometimes be applied to the wrong branch
  • 7204 - Speeding up project fetching when requesting an individual project, or taking a set number
  • 7235 - Fixing timeout from manual interventions after 30 minutes on Azure
  • 6915 - Events with long messages can now be exported with migrator
  • 7231 - Speeding up teams API fetching
  • 7234 - Fix team roles not updating immediate in multi-node setup
  • 7233 - Fix excessive logging of "Cursor should exist"
  • 7232 - Fix potential issue with multiple nodes running message bus cleanup
  • 7160 - Improve the error message when the deployment settings file can not be found in the Git repo
  • 7226 - Octopus Server will now drop any messages that cannot be sent successfully to SumoLogic to avoid performance degradation on communication failures
  • 7224 - Updating a step template usage which is used in a channel's versioning rules will no longer result in an error
  • 7093 - Extension link in Configuration remains hidden unless user has correct permissions
  • 7210 - Azure Devops Fatal Error when running task: OctopusCreateRelease@4 with a commit message referencing a Jira Work Item that doesn't exist
  • 7223 - Azure Devops Fatal Error when running task: OctopusCreateRelease@4 with a commit message referencing a Jira Work Item that doesn't exist
  • 7050 - Fixes a bug where unexpected masked output is written to logs, when echoing an empty Bash script argument
  • 7219 - Corrected the permissions required to view the telemetry configuration menu item
  • 7183 - Add project name in HTML title
  • 7155 - Crontabs can now be correctly parsed in the tr-TR locale
  • 7148 - Sorted lifecycles correctly in the channel edit page
  • 7213 - Propagate external group changes to all cluster nodes
  • 7212 - Propagate user modifications to all cluster nodes
  • 7194 - Version control settings are now checked for conflicts with other projects before saving. Cloning version controlled projects has been temporarily disabled
  • 7209 - Added support for configuring multiple connection for Azure DevOps Issue Tracker integration
  • 7202 - Fix issue with auto-created space manager team not found when creating / retrieving space
  • 7207 - Fix issue with message bus events not being deleted, leading to slow queries
  • 7203 - Fix configuration settings being cached too long
  • 7171 - Fix channel version rules being unexpectedly changed when renaming steps
  • 7199 - SumoLogic Serilog sink now buffers to improve performance
  • 7195 - Speeding up variables API fetching
  • 7180 - Re-introduced the advanced options in the Project Clone dialog
  • 7185 - Let's Encrypt configuration no longer gets stuck "Waiting for other tasks to complete"
  • 7239 - Display error message to user when attempting to convert a project with sensitive variables to Config as Code
  • 7112 - Removed the need to specify the Octopus.Action.RunOnServer property in OCL when using workers
  • 6828 - Set Tentacle connection messages to debug to reduce the noise in logs
  • 7181 - Viewing deployment processes for VCS Projects with a step template no longer requires the ActionTemplateView permission
  • 7175 - Existing features configuration values are no longer being overwritten by missing fields in the request
  • 6909 - Fixed incorrect Calamari upgrade message through improved version checking
  • 7172 - Hashes are no longer mistaken for multi-line service messages
  • 7170 - Fixes an issue where New-OctopusTokenAccount doesn't validate against an empty/null -token argument
  • 7193 - Token Account creation allowed missing tokens when created via steps
  • 7038 - Decouple telemetry from checking for upgrades and introduce dedicated telemetry screen
  • 7147 - clone step still needs to be available from runbooks in config as code projects
  • 7123 - Fix infrastructure dashboard page to show correct number of targets in ‘Tenants’ section
  • 6838 - Added an environment variable OCTOPUS_SERVER_CONFIGURATION_DIRECTORY which refers to the directory where the docker image stores configuration files. Defaults to /home/octopus/.octopus
  • 7205 - Fixed Migrator remapping issues: ActionTemplate.LogoAttachmentKey will be removed if the reference does not exist, Proxy import is fixed, Release.LifecycleId is now correctly mapped
  • 7188 - Support added for changing the default branch on a Git Project
  • 7240 - Re-enable changing the default branch in Config as Code settings
  • 7164 - Channels can be deleted again via /channels/{channel-id}
  • 7189 - Improve stability of Git cache retention process when encountering files marked as read_only

Changes in Octopus Server 2021.3.8275

Breaking Changes
  • 7073 - Reversal of behavioral change introduced in 2021.2.5105 - Lifecycles on Releases are now sourced from the Channel again
  • 6982 - Added runbook run activity to the deployment target screen. GET machines/{id}/tasks now returns both deployments and runbook runs, and can be filtered by specifying a type parameter
  • 6944 - Remove role input from variable preview, instead retrieve role scope based on the deployment target selected
Other Changes
  • 7109 - Fixed JSON serialisation issues in OCL when enabling Config as Code
  • 7152 - Can't add/edit Azure account variables
  • 7153 - Repackaged node-bootstrapper tool manually to work properly with our .tgz archiving pipeline
  • 7140 - Fixes a issue in which the Task History was not updated because QueueTime was set to the minimum value
  • 2998 - Improved the performance of the release page when the project has a large number of package steps
  • 7191 - Could not view old releases
  • 7139 - Fixed a performance issue where querying a large number of ServerTasks was taking a long time
  • 7190 - Octopus .NET API client not working with Server
  • 7137 - Migrating api/smtpconfiguration from Nancy to MVC
  • 7131 - Migrating api/accounts from Nancy to MVC
  • 7132 - Database collations errors now indicate what failed the collation test
  • 7186 - Modify VCS space used logic to account for file being removed while its getting calculated
  • 7126 - Long package names are now correctly handled by build information
  • 6580 - Version correctly recorded for Linux targets during health check
  • 7117 - On Windows, Tentacle.exe no longer requires admin rights for most CLI commands
  • 7058 - Fixed an issue where CloudFormation step may report success when stack has failed
  • 6965 - Improved detection of a NuGet V3 feed and handling of NuGet V3 feeds that don't fully implement the NuGet V3 specification
  • 7052 - Resolve an issue where there could be deadlocks and duplicate events when adding or deleting machines
  • 7116 - Removed log noise from logging some expected exceptions as errors
  • 7105 - Fixing an issue where viewing a release referencing packages created in other releases shows errors while loading release notes
  • 7108 - Fix SQL Server error The server failed to resume the transaction
  • 7096 - Migrating api/machineroles/all from Nancy to MVC
  • 36 - JIRA Integration Octopus URL Virtual Directory Binding
  • 35 - Jira integration authentication TEST button returns a 404 through reverse proxy.
  • 7097 - Migrating api/machineroles/all from Nancy to MVC
  • 7098 - Fix for server tasks being created with QueueTime of DateTimeOffset.MinValue
  • 7099 - Reduce blob column sizes and make index unique
  • 7103 - Add simple performance test for creating releases and deployments, logged to TeamCity build statistics
  • 7079 - Migrated unknown variable types to a known type
  • 7080 - Removed a visible semicolon when adding a deployment target
  • 7101 - DynamicExtensionsScripts Configuration was changed
  • 7045 - Fixed an issue where portal would use incorrect styles immediately after upgrading
  • 7102 - Add stop-loss convention test for MVC controller parameters
  • 7070 - Octopus Server running on linux can now connect to named SQL Server instances
  • 7068 - Reduced the size of the docker image by restructuring the docker container layers
  • 7100 - Revert "Tune GC settings to be more friendly to shared hosting" for performance
  • 7104 - Cherry-pick performance changes to entity tracker
  • 7024 - Fixed an issue where the process editor loses all state when resizing the browser window
  • 6904 - You can now push Build Information to Maven packages with : in their name
  • 7057 - Fixed Permissions Check to allow Audit Events to be written down during background tasks
  • 7063 - Improved performance of auto-deploy logs
  • 6987 - Enable anonymous bind support in LDAP authentication provider
  • 7059 - Kubernetes Job resources do not include images
  • 7008 - Add Google Cloud support to New-OctopusKubernetesTarget cmdlet
  • 7015 - Fixed a permissions issue when attempting to delete deployment targets
  • 6494 - Parent project's deployment now succeeds when deploying a release of a child project with multiple manual interventions
  • 6806 - Removing check for Azure Service Management API usage as it is no longer needed and displays an incorrect warning when Legacy Mode is enabled for Azure Web App deployment
  • 7027 - Project trigger validation message is cryptic
  • 7037 - Space deletions task no longer fails
  • 7029 - Improve error message resulting from attempting to register an Account without setting resource permissions
  • 56 - Fixed issue retrieving Jira issues that have comments
  • 6903 - New installs of Octopus will now include FeedView and ActionTemplateView for Project Viewers, and ActionTemplateView and VariableView on Runbook Consumers to allow these roles to view action template steps. An error will be displayed instead of an infinite loading bar on viewing an action template step without enough permissions
  • 7019 - Download custom version menu item should go to the Tentacle download page
  • 7033 - Kubernetes YAML view does not remove unrecognised elements when saving and opening again
  • 7007 - Fix Swagger documentation for DELETE apikeys
  • 7023 - Kubernetes deployments on a Linux worker always wait for the deployment
  • 7000 - Validate the JSON entered into the Azure Web Service step
  • 6997 - Add support for structured variable replacements in S3 uploads
  • 6993 - Allow CloudFormation templates to be deployed via S3
  • 6998 - Export Terraform plan output in JSON
  • 7200 - Improved display of sensitive-bound Tenant variables
  • 6938 - Existing certificates which point to a non-existent replacement certificate will no longer have an invalid reference. References to replacement certificates will be cleaned if the replacement certificate is deleted
  • 6984 - Fixed issue where enabling legacy mode in Azure steps disabled role selection
  • 6923 - AWS steps now support IMDSv2
  • 6978 - Deploy Kubernetes Containers step custom resource with Windows line endings fails to deploy
  • 6945 - Fetch Lifecycle usage data when accessing page directly
  • 6975 - Fixes ordering of Kubernetes environment variables to allow substitution of Downstream APIs
  • 7192 - Fixed visibility of Tenant Variables on Variable Preview for Tenant Scoped Users
  • 6973 - Helm, Terraform, ARM Template, and CloudFormation steps referencing Docker images
  • 6960 - Release retention now keeps the appropriate dashboard items in discrete channel mode
  • 6970 - Validate variable types and correctly deserialize types to allow case-insensitive input
  • 6966 - Terraform step will not parse template with "{{
  • 6950 - Dashboard once again displays most recent releases per environment when there are multiple channels
  • 6486 - Ensure correct status is shown on Deploy Child Project steps with manual intervention

Unsure which version is a compatible upgrade? Compare releases.

Looking for older versions of Octopus? Download older versions.