Using ReleaseHttpClient for interacting with ReleaseManagement service

ReleaseHttpClient is public as nuget package : https://www.nuget.org/packages/Microsoft.VisualStudio.Services.Release.Client

GitHub samples: https://github.com/chandan-anjani/VSTSRMAPISample

Fetching release definitions using given credential :-

Step1: Create one 'Windows Console Application' using Visual studio 2015

Step2: Goto Tools -->NuGet Package Manager --> Manage NuGet Packages for Solutions --> Browse (make sure Package source: nuget.org)

Step3: Search and Install following package to your solution

  •  Microsoft.VisualStudio.Services.Release.Client
  • Microsoft.VisualStudio.Services.InteractiveClient

Step4: Add following code to fetch all release definitions for a given project. Please update your tenant and project name in below sample.

 using System;
using Microsoft.VisualStudio.Services.Client;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.ReleaseManagement.WebApi.Clients;

namespace ReleaseHttpClientSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri serverUrl = new Uri("https://{your tenant name}.visualstudio.com");
            VssCredentials credentials = new VssClientCredentials();
            credentials.Storage = new VssClientCredentialStorage();

            VssConnection connection = new VssConnection(serverUrl, credentials);

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

             var releaseDefinitions = rmClient.GetReleaseDefinitionsAsync("{your project name}").Result;

            Console.Out.WriteLine("Release definitions " + releaseDefinitions.Count);
        }
    }
}

Step5: Done

 

 Adding a variable to a given release using PAT Token :-

Follow Step1 to Step3 above

Step4:-

 using System;
using Microsoft.VisualStudio.Services.Client;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.ReleaseManagement.WebApi.Clients;

namespace ReleaseHttpClientSample
{
    class Program
    {
        static void Main(string[] args)
        {
            string collectionUri = args[0];
            string projectName = args[1];
            string patToken = args[2];
            int releaseId = int.Parse(args[3]);

            VssConnection connection = new VssConnection(new Uri(collectionUri), new VssBasicCredential("username", patToken));
            ReleaseHttpClient client = connection.GetClient<ReleaseHttpClient>();
            var release = client.GetReleaseAsync(projectName, releaseId).Result;

            var variableValue = new ConfigurationVariableValue();
            variableValue.Value = "bar";
            release.Variables.Add("foo", variableValue);

            var updatedRelease = client.UpdateReleaseAsync(release, projectName, releaseId).Result;

     } 
   } 
}

Step5: Done