Use GitHub and Octopus together to manage your most complex deployments

  • 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
  • Integrate Octopus and GitHub easily with no shared credentials

Integrate Octopus and GitHub seamlessly

You can connect Octopus Deploy and GitHub easily and securely, with no shared credentials needed.

  • OpenID Connect allows your GitHub Actions workflows to communicate with Octopus Deploy without needing to share GitHub credentials with Octopus.
  • The Octopus Deploy GitHub app enables deep integration without managing Octopus API keys in GitHub.
  • The Octopus Extension for GitHub Copilot is an integration that responds to plain text chat queries submitted in Copilot. It responds with deployment-related information from your Octopus instance, giving you answers quickly and easily without switching contexts.
  • Use Octopus actions in your GitHub Actions workflows to help manage complex deployment scenarios.
GitHub logo and Octopus Deploy logo with connecting arrows

Octopus makes your complex deployments simple

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 Tenants feature makes intricate deployments easier to scale.

  • Build out from and use the same process for all your projects’ deployments.
  • Manage your tenanted 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