public int[] GetEnvironmentIdsByName(string project, string definitionName, string environment1, string environment2) { int[] environmentIds = new int[2]; try { string requestURL = string.Empty; using (var client = GetHttpClient()) { requestURL = string.Format("{0}/_apis/release/definitions?api-version=" + _configuration.VersionNumber, project); HttpResponseMessage response = client.GetAsync(requestURL).Result; if (response.IsSuccessStatusCode) { ReleaseDefinitionsResponse.Release Definitions = Newtonsoft.Json.JsonConvert.DeserializeObject <ReleaseDefinitionsResponse.Release>(response.Content.ReadAsStringAsync().Result.ToString()); int requiredDefinitionId = Definitions.value.Where(x => x.name == definitionName).FirstOrDefault().id; using (var client1 = GetHttpClient()) { requestURL = string.Format("{0}/_apis/release/definitions/{1}?api-version=" + _configuration.VersionNumber, project, requiredDefinitionId); HttpResponseMessage ResponseDef = client1.GetAsync(requestURL).Result; if (response.IsSuccessStatusCode) { ReleaseDefinitions.ReleaseDefinition DefinitionResult = Newtonsoft.Json.JsonConvert.DeserializeObject <ReleaseDefinitions.ReleaseDefinition>(ResponseDef.Content.ReadAsStringAsync().Result.ToString()); environmentIds[0] = DefinitionResult.environments.Where(x => x.name == environment1).FirstOrDefault().id; environmentIds[1] = DefinitionResult.environments.Where(x => x.name == environment2).FirstOrDefault().id; return(environmentIds); } } } } } catch (Exception ex) { logger.Debug(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + "GetEnvironmentIdsByName" + "\t" + ex.Message + "\t" + "\n" + ex.StackTrace + "\n"); } return(environmentIds); }
/// <summary> /// method to export release definition jsons from source project /// </summary> /// <param name="project"></param> public void ExportReleaseDefinitions(string project) { try { List <TemplatesGeneratorTool.ViewModel.ReleaseDefinitions.ReleaseDefinition> ResultList = new List <TemplatesGeneratorTool.ViewModel.ReleaseDefinitions.ReleaseDefinition>(); using (var client = new HttpClient()) { client.BaseAddress = new Uri(_sourceConfig.UriString); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _sourceCredentials); HttpResponseMessage response = client.GetAsync(string.Format("https://{0}.vsrm.visualstudio.com/DefaultCollection/{1}/_apis/release/definitions?api-version=3.0-preview.1", _accountName, project)).Result; if (response.IsSuccessStatusCode) { ReleaseDefinitionsResponse.Release Definitions = Newtonsoft.Json.JsonConvert.DeserializeObject <ReleaseDefinitionsResponse.Release>(response.Content.ReadAsStringAsync().Result.ToString()); foreach (ReleaseDefinitionsResponse.Value value in Definitions.value) { TemplatesGeneratorTool.ViewModel.ReleaseDefinitions.ReleaseDefinition DefinitionResult = new TemplatesGeneratorTool.ViewModel.ReleaseDefinitions.ReleaseDefinition(); using (var client1 = new HttpClient()) { client1.BaseAddress = new Uri(_sourceConfig.UriString); client1.DefaultRequestHeaders.Accept.Clear(); client1.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client1.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _sourceCredentials); HttpResponseMessage ResponseDef = client1.GetAsync(string.Format("https://{0}.vsrm.visualstudio.com/DefaultCollection/{1}/_apis/release/definitions/{2}?api-version=3.0-preview.1", _accountName, project, value.id)).Result; if (response.IsSuccessStatusCode) { DefinitionResult = Newtonsoft.Json.JsonConvert.DeserializeObject <TemplatesGeneratorTool.ViewModel.ReleaseDefinitions.ReleaseDefinition>(ResponseDef.Content.ReadAsStringAsync().Result.ToString()); ResultList.Add(DefinitionResult); } } } } } if (ResultList.Count > 0) { if (!Directory.Exists(@"Templates\ReleaseDefinitions")) { Directory.CreateDirectory(@"Templates\ReleaseDefinitions"); } int count = 1; foreach (TemplatesGeneratorTool.ViewModel.ReleaseDefinitions.ReleaseDefinition def in ResultList) { foreach (var environment in def.environments) { environment.queueId = "$Hosted$"; environment.owner.displayName = "$OwnerDisplayName$"; environment.owner.id = "$OwnerId$"; environment.owner.uniqueName = "$OwnerUniqueName$"; foreach (var task in environment.deployStep.tasks) { if (task.inputs.ConnectedServiceName != "") { task.inputs.ConnectedServiceName = string.Format("${0}$", string.Empty); } if (task.inputs.connectedServiceName != "") { task.inputs.connectedServiceName = string.Format("${0}$", string.Empty); } if (task.inputs.serviceEndpoint != "") { task.inputs.serviceEndpoint = string.Format("${0}$", string.Empty); } if (task.inputs.ConnectedServiceNameARM != "") { task.inputs.ConnectedServiceNameARM = string.Format("${0}$", string.Empty); } } } foreach (var artifact in def.artifacts) { artifact.definitionReference.project.id = "$ProjectId$"; artifact.definitionReference.project.name = "$ProjectName$"; artifact.definitionReference.definition.id = string.Format("${0}-id$", artifact.definitionReference.definition.name); artifact.sourceId = string.Format("$ProjectId$:${0}-id$", artifact.definitionReference.definition.name); } System.IO.File.WriteAllText(@"Templates\ReleaseDefinitions\ReleaseDef" + count + ".json", JsonConvert.SerializeObject(def, Formatting.Indented)); count = count + 1; } } } catch (Exception ex) { Console.WriteLine("Error occured while generating release definition template: " + ex.Message); Console.WriteLine(""); } }