public async Task <IActionResult> CreateRelease([FromRoute] string revisionNumber, [FromRoute] string projectName, [FromBody] QueueReleaseRequest request) { Project project = await ProjectDataService.GetAsync(TableStorageConfig.DomainString, projectName); if (null == project) { return(new NotFoundObjectResult("Project not found")); } Revision revision = await RevisionDataService.GetAsync(projectName, revisionNumber); if (revision == null) { return(new NotFoundObjectResult("Revision not found")); } else { if (project.AzureDevOps != null) { dynamic desObject = JsonConvert.DeserializeObject <dynamic>(revision.CommitPayload); string commitNumber = Convert.ToString(desObject.commit); string aadAccessToken = this.HttpContext.Request?.Headers["Authorization"].ToString().Replace("Bearer ", ""); string accessToken = await ExchangeToAzureDevOpsToken(aadAccessToken); Release returnRelease = await AzureDevOpsService.QueueRelease(project.AzureDevOps, request, accessToken, projectName, revisionNumber, commitNumber); if (returnRelease != null) { returnRelease.Status = "InProgress"; await ReleaseDataService.InsertOrReplaceAsync(returnRelease).ContinueWith(async(antecedent) => { await BroadcastStatusHubContext.Clients.All.SendAsync(EventTable.GetEventMessage(EventTable.EventID.EventReleaseStatusChanged), returnRelease); }, TaskContinuationOptions.OnlyOnRanToCompletion); return(Ok(returnRelease)); } } return(StatusCode(500)); } }
public async Task <IActionResult> CreateRelease([FromRoute] string revisionNumber, [FromRoute] string projectName, [FromBody] QueueReleaseRequest request) { Project project = await ProjectDataService.GetAsync(TableStorageConfig.DomainString, projectName); if (null == project) { return(new NotFoundObjectResult("Project not found")); } Revision revision = await RevisionDataService.GetAsync(projectName, revisionNumber); if (revision == null) { return(new NotFoundObjectResult("Revision not found")); } else { if (project.AzureDevOps != null) { dynamic desObject = JsonConvert.DeserializeObject <dynamic>(revision.CommitPayload); string commitNumber = Convert.ToString(desObject.commit); string aadAccessToken = this.HttpContext.Request?.Headers["Authorization"].ToString().Replace("Bearer ", ""); string accessToken = await ExchangeToAzureDevOpsToken(aadAccessToken); Release returnRelease = await AzureDevOpsService.QueueRelease(project.AzureDevOps, request, accessToken, projectName, revisionNumber, commitNumber); if (returnRelease != null) { await ReleaseDataService.InsertOrReplaceAsync(returnRelease); return(Ok(returnRelease)); } } return(StatusCode(500)); } }