Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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));
            }
        }