Quantcast
Viewing all articles
Browse latest Browse all 5308

How to undelete releases of a release definition?

One of our customer have reported as he deleted few releases of a given release definition accidentally and wanted to know a way to bulk undelete those releases. The undelete can be done within 15 days of the soft delete and after that releases are permanently deleted. It can be undeleted either using Powershell or C# program.

Using powershell:-

===============

param (

[Parameter(Mandatory=$true)]

[ValidateNotNullOrEmpty()]

[string] $token,

[int32] $definitionId

)

## Construct a basic auth head using PAT

function BasicAuthHeader()

{

param([string]$authtoken)

$ba = (":{0}" -f $authtoken)

$ba = [System.Text.Encoding]::UTF8.GetBytes($ba)

$ba = [System.Convert]::ToBase64String($ba)

$h = @{Authorization=("Basic{0}" -f $ba);ContentType="application/json"}

return $h

}

# Fill in your account name/project name/definition name

$accountName = "anjani1"

$projectName = "TFVCProj"

$definitionNameToRecover = "New Release Definition"

# Find the Id of release definition that got deleted

$deletedReleasesUri = "https://$accountName.vsrm.visualstudio.com/$projectName/_apis/Release/releases?api-version=4.1-preview.6&isDeleted=true&definitionId=$definitionId"

$h = BasicAuthHeader $token

$deletedReleases = Invoke-RestMethod -Uri $deletedReleasesUri -Headers $h -ContentType “application/json" -Method Get

$deletedReleasesIds = $deletedReleases.value.id # | ConvertTo-Json -Depth 100

write-host "Found the total deleted releases : $deletedReleasesIds.count"

For ($i=0; $i -lt $deletedReleasesIds.count; $i++)

{

$deletedReleaseId = $deletedReleasesIds[$i];

Write-Host "Found the deleted id : $deletedReleaseId";

# Recover the deleted release

$undeleteReason = '{ "Comment" : "Deleted by mistake" }'

$undeleteReleaseUri = "https://$accountName.vsrm.visualstudio.com/$projectName/_apis/Release/releases/$deletedReleaseId`?comment=$undeleteReason&api-version=4.1-preview.6"

$undeletedDefinition = Invoke-RestMethod -Uri $undeleteReleaseUri -Headers $h -ContentType “application/json" -Method Put -Body $undeleteReason

write-host "Release id: $deletedReleaseId recovered successfully"

}

Using C#: [Refer blog this to know as how to use ReleaseManagementClient]

==============

using System;

using Microsoft.VisualStudio.Services.Client;

using Microsoft.VisualStudio.Services.Common;

using Microsoft.VisualStudio.Services.ReleaseManagement.WebApi.Clients;

using Microsoft.VisualStudio.Services.WebApi;

using Microsoft.VisualStudio.Services.ReleaseManagement.WebApi;

using Microsoft.VisualStudio.Services.ReleaseManagement.WebApi.Contracts;

using System.Diagnostics;

 

namespace ReleaseHttpClientSample

{

class Program

{

static void Main(string[] args)

{

Uri serverUrl = new Uri("https://anjani1.visualstudio.com");

var project = "TFVCProj";

VssCredentials credentials = new VssClientCredentials();

credentials.Storage = new VssClientCredentialStorage();

 

VssConnection connection = new VssConnection(serverUrl, credentials);

 

ReleaseHttpClient rmClient = connection.GetClient<ReleaseHttpClient>();

 

var releases = rmClient.GetReleasesAsync(project, definitionId: 1, isDeleted: true).Result;

 

foreach(var release in releases)

{

rmClient.UndeleteReleaseAsync(project, release.Id, "Deleted by mistake").SyncResult();

}

 

}

}

}


Viewing all articles
Browse latest Browse all 5308

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>