コード例 #1
0
        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.");
        }
コード例 #2
0
        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.");
        }
コード例 #3
0
        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.");
        }