Search code examples
ms-release-management

ReleaseManagement InitiateRelease REST API call returns 500 error


Using Release Management, I am trying to execute a Powershell to create a new release using the InitiateRelease REST API. I am using Update 4 with RM Server on prem.

The response I get is a 500 error. On the RM server, there is no error logged. However Fiddler gives a bit more details:

{"Message":"An error has occurred.","ExceptionMessage":"The given key was not present in the dictionary.", "ExceptionType":"System.Collections.Generic.KeyNotFoundException","StackTrace":" at System.Web.Http.ApiController.d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__0.MoveNext()"}

Here is my PS1.

$releaseDefinition = "MyReleaseTemplateName"
$releaseName = $releaseDefinition + (Get-Date).DateTime

$deploymentPropertyBag = "{ 
                            ""MyComponentName:Build"" : ""MyBuildNumber"",
                            ""ReleaseName"" : ""$releaseName""                             
                         }"

$propertyBag = [System.Uri]::EscapeDataString($deploymentPropertyBag)

$url = "http://myserver:1000/account/releaseManagementService/_apis/releaseManagement/OrchestratorService/InitiateRelease?releaseTemplateName=" + $releaseDefinition + "&deploymentPropertyBag=" + $propertyBag + "&api-version=3.0"

Write-Host $url

$wc = New-Object System.Net.WebClient
$wc.UseDefaultCredentials = $true
$releaseId = $wc.UploadString($url,"")

Solution

  • The problem I was facing was that the component name in the DeploymentPropertyBag was misspelled.

    The error is not helping so I thought I would share my solution here.