public async Task Handle(StartRequest <VSTSRelease_v1> request, CancellationToken cancellationToken) { var dialog = new ConfirmationDialog($"Are you sure you want to create a new release of {request.DataContext.Name}?"); var result = _dialogService.ShowDialog(dialog); if (result != DialogResult.Yes) { return; } if (!request.DataContext.ReleaseId.HasValue) { throw new InvalidOperationException("Release id was not set."); } _logger.Info($"Creating a new release of \"{request.DataContext.Name}\"..."); var client = new AnyStatus.VSTS(); request.DataContext.MapTo(client); var body = new { definitionId = request.DataContext.ReleaseId }; await client.Send("release/releases?api-version=4.1-preview.6", body, true).ConfigureAwait(false); request.DataContext.State = State.Queued; _logger.Info($"Release \"{request.DataContext.Name}\" has been queued."); }
public async Task Handle(StartRequest <VSTSReleaseEnvironment> request, CancellationToken cancellationToken) { var dialog = new ConfirmationDialog($"Are you sure you want to deploy to {request.DataContext.Name}?"); var result = _dialogService.ShowDialog(dialog); if (result != DialogResult.Yes) { return; } _logger.Info($"Starting deployment to \"{request.DataContext.Name}\"..."); var client = new AnyStatus.VSTS(); if (request.DataContext.Parent is VSTSRelease_v1 release) { release.MapTo(client); } else { throw new InvalidOperationException("Release environment is not associated with a release."); } if (!release.ReleaseId.HasValue) { throw new InvalidOperationException("Release id was not set."); } var lastRelease = await client .GetLastReleaseAsync(release.ReleaseId.Value) .ConfigureAwait(false); if (lastRelease == null) { request.DataContext.State = State.Failed; _logger.Error("VSTS release definition was not released."); return; } var body = new { status = "inProgress" }; var url = $"release/releases/{lastRelease.Id}/environments/{request.DataContext.EnvironmentId}?api-version=4.1-preview.5"; await client.Send(url, body, true, true).ConfigureAwait(false); request.DataContext.State = State.Queued; _logger.Info($"Deployment to \"{request.DataContext.Name}\" has been queued."); }
public async Task Handle(StartRequest <VSTSBuild_v1> request, CancellationToken cancellationToken) { var dialog = new ConfirmationDialog($"Are you sure you want to start {request.DataContext.Name}?"); var result = _dialogService.ShowDialog(dialog); if (result != DialogResult.Yes) { return; } _logger.Info($"Starting \"{request.DataContext.Name}\"..."); var client = new AnyStatus.VSTS(); request.DataContext.MapTo(client); if (request.DataContext.DefinitionId == null) { var definition = await client.GetBuildDefinitionAsync(request.DataContext.DefinitionName).ConfigureAwait(false); request.DataContext.DefinitionId = definition.Id; } var body = new { Definition = new { Id = request.DataContext.DefinitionId } }; await client.Send("build/builds?api-version=2.0", body).ConfigureAwait(false); request.DataContext.State = State.Queued; _logger.Info($"Build \"{request.DataContext.Name}\" has been triggered."); }