private async Task <Build> SendRequest(QueueBuildRequest queueBuildRequest) { string requestBody = JsonConvert.SerializeObject(queueBuildRequest); using StringContent httpContent = new StringContent(requestBody, Encoding.UTF8, "application/json"); HttpResponseMessage response = await _httpClient.PostAsync("?api-version=5.1", httpContent); return(await response.Content.ReadAsAsync <Build>()); }
/// <inheritdoc/> public async Task <Build> QueueAsync( QueueBuildParameters queueBuildParameters, int buildDefinitionId) { queueBuildParameters.GiteaEnvironment = $"{_generalSettings.HostName}/repos"; queueBuildParameters.AppDeployToken = _sourceControl.GetDeployToken(); QueueBuildRequest queueBuildRequest = CreateBuildRequest(queueBuildParameters, buildDefinitionId); return(await SendRequest(queueBuildRequest)); }
public async Task <BuildDto> QueueBuild(string projectIdentifier, int definitionId, string organization = default, CancellationToken cancellationToken = default) { var request = new QueueBuildRequest(organization ?? _options.Value.DefaultOrganization, projectIdentifier, definitionId); request.Headers.Authorization = GetAuthZHeader(); var response = await SendAsync(request, cancellationToken); var buildDto = await response.Content.ReadFromJsonAsync <BuildDto>(null, cancellationToken); return(buildDto); }
public void CanBeConstructed() { //Arrange QueueBuildRequest sut; //Act sut = new QueueBuildRequest("my-org", "my-project", 1); //Assert Assert.NotNull(sut); Assert.Equal("6.0", sut.ApiVersion); Assert.Equal(HttpMethod.Post, sut.Method); Assert.Equal("https://dev.azure.com/my-org/my-project/_apis/build/builds?api-version=6.0&definitionId=1", sut.RequestUri.AbsoluteUri); }
public async Task CanBeConstructedWithPayload() { //Arrange QueueBuildRequest sut; //Act sut = new QueueBuildRequest("my-org", "my-project", new BuildDefinitionDto()); //Assert Assert.NotNull(sut); Assert.Equal("6.0", sut.ApiVersion); Assert.Equal(HttpMethod.Post, sut.Method); Assert.Equal("https://dev.azure.com/my-org/my-project/_apis/build/builds?api-version=6.0&definitionId=0", sut.RequestUri.AbsoluteUri); Assert.True(await new StringContent(JsonSerializer.Serialize(new BuildDefinitionDto())).ReadAsStringAsync() == await sut.Content.ReadAsStringAsync()); }
public override async Task <QueueBuildResponse> QueueBuild(QueueBuildRequest request, ServerCallContext context) { context.CheckAuthenticated(_authSettings); var result = await _executor.ExecuteAsync(new QueueBuildQuery { BuildDefinition = request.BuildDefinition.ToModel() }).ConfigureAwait(false); var response = new QueueBuildResponse(); if (result != null) { response.Build = result.ToProto(); } return(response); }
public async Task <Revision> QueueBuild(AzureDevOpsSettings azureDevOps, QueueBuildRequest queueBuildRequest, string accessToken) { var credentials = new VssOAuthAccessTokenCredential(accessToken); var connection = new VssConnection( new Uri($"https://dev.azure.com/{azureDevOps.Organization}"), credentials); try { var buildClient = connection.GetClient <BuildHttpClient>(); var definition = await buildClient.GetDefinitionAsync(azureDevOps.Project, int.Parse(azureDevOps.BuildDefinition)); Dictionary <string, string> parameters = queueBuildRequest.Variables.ToDictionary(v => v.Key, v => v.Value); Build build = new Build { Definition = definition, Project = definition.Project, SourceBranch = queueBuildRequest.Branch, Parameters = JsonConvert.SerializeObject(parameters) }; var response = await buildClient.QueueBuildAsync(build); var revision = new Revision() { RevisionNumber = response.Id.ToString(), Requestor = response.RequestedBy.DisplayName, CreatedTime = DateTimeOffset.Now }; return(revision); } catch (Exception) { return(null); } }
public async Task <IActionResult> TriggerAzure([FromRoute] string projectName, [FromBody] QueueBuildRequest request) { Project project = await ProjectDataService.GetAsync(CosmosDbConfig.DomainString, projectName); if (null == project) { return(new NotFoundObjectResult("Project not found")); } if (project.AzureDevOps != null) { string aadAccessToken = this.HttpContext.Request?.Headers["Authorization"].ToString().Replace("Bearer ", ""); string accessToken = await ExchangeToAzureDevOpsToken(aadAccessToken); Revision revision = await AzureDevOpsService.QueueBuild(project.AzureDevOps, request, accessToken); if (revision == null) { return(StatusCode(500)); } revision.ProjectName = projectName; await RevisionDataService.InsertAsync(revision); return(Ok(revision)); } return(new NotFoundObjectResult("CI/CD service not found")); }