Skip to content

Instantly share code, notes, and snippets.

@Dalmirog-zz
Last active September 22, 2015 12:31
Show Gist options
  • Save Dalmirog-zz/b6264c8b7d61a2e1398a to your computer and use it in GitHub Desktop.
Save Dalmirog-zz/b6264c8b7d61a2e1398a to your computer and use it in GitHub Desktop.
New Incremental Release with prompt variable
$apiKey = "Your API Key"
$OctopusURL = "Your Octopus URL"
$Header = @{ "X-Octopus-ApiKey" = $apiKey }
$ProjectName = "Your Project Name"
$EnvironmentName = "Your Environment Name"
#Getting Environment and Project By Name
$Project = Invoke-WebRequest -Uri "$OctopusURL/api/projects/$ProjectName" -Headers $Header| ConvertFrom-Json
$Environment = Invoke-WebRequest -Uri "$OctopusURL/api/Environments/all" -Headers $Header| ConvertFrom-Json
$Environment = $Environment | ?{$_.name -eq $EnvironmentName}
#Getting Deployment Template to get Next version
$dt = Invoke-WebRequest -Uri "$OctopusURL/api/deploymentprocesses/deploymentprocess-$($project.id)/template" -Headers $Header | ConvertFrom-Json
#Creating Release
$ReleaseBody = @{ Projectid = $Project.Id
version = $dt.nextversionincrement } | ConvertTo-Json
$r = Invoke-WebRequest -Uri $OctopusURL/api/releases -Method Post -Headers $Header -Body $ReleaseBody | ConvertFrom-Json
#Getting task to get preview
$t = Invoke-WebRequest -Uri ($OctopusURL + $r.links.DeploymentTemplate) -Headers $Header | ConvertFrom-Json
#Preview holds the variables labeles and names.
$p = Invoke-WebRequest -Uri ($OctopusURL + $t.PromoteTo.links.Preview) -Headers $Header | ConvertFrom-Json
#Creating deployment and setting value to the only prompt variable I have on $p.Form.Elements. You're gonna have to do some digging if you have more variables
$DeploymentBody = @{
ReleaseID = $r.Id #mandatory
EnvironmentID = $Environment.id #mandatory
FormValues = @{ # Here is where you declare all your Prompt variables.
"$($p.Form.Elements.name)" = "My Variable Value!"
ForcePackageDownload="False"
ForcePackageRedeployment="False"
UseGuidedFailure="False"
}
} | ConvertTo-Json
Invoke-WebRequest -Uri $OctopusURL/api/deployments -Method Post -Headers $Header -Body $DeploymentBody
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment