Octopus Deploy
note: This guide is now considered legacy and use of the new API is recommended. A high level guide to migrate to the new API can be found here.
Get an Auth Token
Generate an External Auth Token for your build server to use from your Raygun User Settings page
Add server role
Follow the instructions for setting up scripts to run directly on the Octopus Server. The rest of these instructions assume you chose to call your server role octopus-server
.
Add script
In Octopus, create a new "Run a PowerShell script" step in your deployment's Process. Give it a name, and choose the octopus-server
role. This ensures your deployment is only registered once, instead of once per server your deployment runs on. Use the following powershell script in this step:
Write-Host "Adding deployment in Raygun"
$githubSha = ""
if ((Test-Path variable:\GithubToken) -And (Test-Path variable:\GithubRepo)) {
try {
$repo = "https://api.github.com/repos/" + $GithubRepo
$tagName = "build-" + $OctopusParameters["Octopus.Action[DEPLOYMENT_STEP_NAME].Package.NuGetPackageVersion"]
$githuburl = "$repo/git/refs/tags/"+ $tagName + "?access_token=" + $GithubToken
$tagOutput = Invoke-RestMethod -Uri $githuburl
$githubCommitUrl = $tagOutput.object.url + "?access_token=" + $GithubToken
$output = Invoke-RestMethod -Uri $githubCommitUrl
$githubSha = $output.object.sha
}
catch {
Write-Host "Couldn't find Git tag"
}
}
$deploymentId = $OctopusParameters['Octopus.Release.Number']
$ownerName = $OctopusParameters['Octopus.Deployment.CreatedBy.DisplayName']
$emailAddress = $OctopusParameters['Octopus.Deployment.CreatedBy.EmailAddress']
$comment = $OctopusParameters['Octopus.Release.Notes'];
$command = ConvertTo-Json @{
apiKey = $RaygunApiKey
version = $deploymentId
ownerName = $ownerName
emailAddress = $emailAddress
comment = $comment
scmIdentifier = $githubSha
}
$url = "https://app.raygun.com/deployments?authToken=" + $RaygunAuthToken
try {
Invoke-RestMethod -Uri $url -Body $command -Method Post -ContentType "application/json"
Write-Host "Added deployment in Raygun"
} catch {
Write-Host "Error received when adding deployment in Raygun: " $_
}
You need to replace DEPLOYMENT_STEP_NAME with the name of the step in your process which deploys your Nuget package. If you don't use Github, you could just remove that whole section, or replace it with your own code to get your Git commit hash.
Update code
Add the following Variables to your deployment: RaygunApiKey
, RaygunAuthToken
, GithubToken
, and GithubRepo
.
RaygunApiKey
should be set your Raygun Application's ApiKey (the same one you use to set Raygun up within your app).
RaygunAuthToken
should be set to the External Auth Token you generated in Step 1. You may want to set different RaygunApiKey
values depending on the Environment being deployed to if you have separate Raygun Apps for your different Environments.
GithubToken
should be set to a Personal Access Token from Github (generated here: https://github.com/settings/applications). The token just needs the repo
scope.
GithubRepo
should be the full name of your repo - somethink like MindscapeHQ/Raygun4Net
.
Deploy your application and watch the Deployments roll in!