Use GitHub and Octopus together to manage your most complex deployment scenarios.

  • Deploy to the cloud, data centers, and on-premises servers
  • Visualize your deployments at a glance
  • Deliver multiple instances of your software without extra effort
  • Manage secrets and shared variables

Deploy to the cloud, data centers, and on-premises servers

Octopus makes deployments simple and consistent wherever you deliver software.

  • Define your process once and deploy routinely to any cloud, service, on-premises, or hybrid platforms.
  • Spend less time debugging environmental differences and more time building and delivering software.

Visualize your deployments at a glance

The Octopus dashboard provides a visual summary of your releases.

  • See the stage, environment, and state of each deployment across multiple repositories in one place.
  • Dive into the details of your projects and releases from the bird's-eye view of your dashboard.
Screenshot of Octopus Deploy release dashboard
Multi Tenancy deployments UI example

Deliver multiple instances of your software without extra effort

Octopus Deploy’s built-in multi-tenancy makes intricate deployments easier to scale.

  • Build out from and use the same process for all your projects’ deployments.
  • Manage your multi-tenancy deployments however it suits your teams, projects, and customers.

Manage secrets and shared variables

Securely manage your deployment process and eliminate hard-coded configuration settings

  • Apply the same deployment process across your environments using variables.
  • Secure your passwords and other secrets in Octopus or a third-party vault, and reference them in your processes.

Add Octopus to your GitHub Workflow

name: Install Octopus CLI 🐙

uses: OctopusDeploy/install-octopus-cli-action@v3

with:

version: '*'

name: Install Octopus CLI 🐙

uses: OctopusDeploy/install-octopus-cli-action@v3

with:

version: '*'

name: Push a package to Octopus Deploy 🐙

uses: OctopusDeploy/push-package-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

packages: |

package1.tar.gz

package2.zip

packages/**/*.zip

name: Run a runbook in Octopus Deploy 🐙

uses: OctopusDeploy/run-runbook-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

project: 'Test Project'

runbook: 'Test Runbook'

environments: [ |

'Dev'

'Test']

name:Create a release in Octopus Deploy 🐙

uses: OctopusDeploy/create-release-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

project: 'MyProject'

name: Push build information to Octopus Deploy 🐙

uses: OctopusDeploy/push-build-information-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

packages: | ''

version: ''

name: Await task in Octopus Deploy 🐙

uses: OctopusDeploy/await-task-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

server_task_id: {{ steps.some_previous_deployment_step.outputs.server_tasks[0].server_task_id }}

name: Create a NuGet package 🐙

uses: OctopusDeploy/create-nuget-package-action@v3

with:

package_id: 'DemoPackage'

version: '1.0.0'

output_folder: 'packaging'

base_path: reports

files: |

**/*.*

nuspec_description: package description

nuspec_authors: |

author 1

author 2

nuspec_release_notes: |

This is a multiline

release note

name: Create a Zip package 🐙

uses: OctopusDeploy/create-zip-package-action@v3

with:

package_id: 'DemoPackage'

version: '1.0.0'

output_folder: './packaging'

base_path: reports

files: |

**/*.*

name: Deploy a release in Octopus Deploy 🐙

uses: OctopusDeploy/deploy-release-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

project: 'MyProject'

release_version: '1.0.0'

environments: [ |

'Dev'

'Test']

variables:

'Foo: Bar'

'Fizz: Buzz']

name: Deploy a release in Octopus Deploy 🐙

uses: OctopusDeploy/deploy-release-tenanted-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

project: 'MyProject'

release_version: '1.0.0'

environment: 'Dev'

tenants: [ |

'Some Tenant A'

'Some Tenant B']

tenant_tags: [ |

'setA/someTagB'

'setC/someTagD']

variables: [ |

'Foo: Bar'

'Fizz: Buzz']

Install Octopus CLI

name: Install Octopus CLI 🐙

uses: OctopusDeploy/install-octopus-cli-action@v3

with:

version: '*'

Install Octopus CLI
Push Package

name: Push a package to Octopus Deploy 🐙

uses: OctopusDeploy/push-package-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

packages: |

package1.tar.gz

package2.zip

packages/**/*.zip

Go to Action: Push Package
Run Runbook

name: Run a runbook in Octopus Deploy 🐙

uses: OctopusDeploy/run-runbook-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

project: 'Test Project'

runbook: 'Test Runbook'

environments: [ |

'Dev'

'Test']

Go to Action in the Marketplace
Create Release

name:Create a release in Octopus Deploy 🐙

uses: OctopusDeploy/create-release-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

project: 'MyProject'

Go to Action: Create Release
Push Build Information

name: Push build information to Octopus Deploy 🐙

uses: OctopusDeploy/push-build-information-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

packages: | ''

version: ''

Go to Action: Push Build Information
Await Task

name: Await task in Octopus Deploy 🐙

uses: OctopusDeploy/await-task-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

server_task_id: {{ steps.some_previous_deployment_step.outputs.server_tasks[0].server_task_id }}

Go to Action: Await Task
Create NuGet Package

name: Create a NuGet package 🐙

uses: OctopusDeploy/create-nuget-package-action@v3

with:

package_id: 'DemoPackage'

version: '1.0.0'

output_folder: 'packaging'

base_path: reports

files: |

**/*.*

nuspec_description: package description

nuspec_authors: |

author 1

author 2

nuspec_release_notes: |

This is a multiline

release note

Create NuGet Package
Create Zip Package

name: Create a Zip package 🐙

uses: OctopusDeploy/create-zip-package-action@v3

with:

package_id: 'DemoPackage'

version: '1.0.0'

output_folder: './packaging'

base_path: reports

files: |

**/*.*

Go to Action: Create Zip Package

Deploy Release

name: Deploy a release in Octopus Deploy 🐙

uses: OctopusDeploy/deploy-release-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

project: 'MyProject'

release_version: '1.0.0'

environments: [ |

'Dev'

'Test']

variables:

'Foo: Bar'

'Fizz: Buzz'] Go to Action: Deploy Release

Deploy Tenanted Release

name: Deploy a release in Octopus Deploy 🐙

uses: OctopusDeploy/deploy-release-tenanted-action@v3

env:

OCTOPUS_API_KEY: ${{ secrets.API_KEY }}

OCTOPUS_SPACE: 'Default Space'

OCTOPUS_URL: ${{ secrets.SERVER }}

with:

project: 'MyProject'

release_version: '1.0.0'

environment: 'Dev'

tenants: [ |

'Some Tenant A'

'Some Tenant B']

tenant_tags: [ |

'setA/someTagB'

'setC/someTagD']

variables: [ |

'Foo: Bar'

'Fizz: Buzz']

Go to Action: Deploy Tenanted Release

See how our actions work