public void CreateEnvironment(string project, string release, Guid environmentId, JObject jsonVariables) { ReleaseDefinition releaseDefinition = GetRelease(project, release); ReleaseDefinitionEnvironmentTemplate environmentTemplate = GetEnvironmentTemplate(project, environmentId); ReleaseDefinitionEnvironment environment = environmentTemplate.Environment; int maxRank = releaseDefinition.Environments.Max(x => x.Rank); environment.Rank = maxRank + 1; environment.Name = Guid.NewGuid().ToString(); List <string> variables = environment.Variables.Keys.ToList(); foreach (var variable in variables) { environment.Variables[variable] = new ConfigurationVariableValue() { Value = "" }; } if (jsonVariables != null) { foreach (var variable in jsonVariables) { environment.Variables[variable.Key] = new ConfigurationVariableValue() { Value = variable.Value.ToString() }; } } releaseDefinition.Environments.Add(environment); Task <ReleaseDefinition> result = releaseClient.UpdateReleaseDefinitionAsync(releaseDefinition, project); ReleaseDefinition update = result.Result; }
public ReleaseDefinitionEnvironmentTemplate GetEnvironmentTemplate(string project, Guid templateId) { ReleaseDefinitionEnvironmentTemplate result = null; using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add( new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String( System.Text.ASCIIEncoding.ASCII.GetBytes( string.Format("{0}:{1}", "", PAT)))); using (HttpResponseMessage response = client.GetAsync( $"https://msfrbouter.vsrm.visualstudio.com/{project}/_apis/Release/definitions/environmenttemplates?templateid={templateId.ToString()}").Result) { response.EnsureSuccessStatusCode(); string responseBody = response.Content.ReadAsStringAsync().Result; result = JsonConvert.DeserializeObject <ReleaseDefinitionEnvironmentTemplate>(responseBody); } } return(result); }