コード例 #1
0
        public async Task <bool> ValidatePublishingState(Guid releaseId)
        {
            _logger.LogTrace($"Validating publishing state: {releaseId}");

            var releaseStatuses =
                (await _releaseStatusService.GetAllByOverallStage(releaseId, Scheduled, Started)).ToList();

            // Should never happen as we mark scheduled releases as superseded prior to validation
            var scheduled = releaseStatuses.FirstOrDefault(status => status.State.Overall == Scheduled);

            if (scheduled != null)
            {
                _logger.LogError(
                    $"Validating {ValidationStage.ReleasePublishingStateNotScheduledOrStarted.ToString()} failed: " +
                    $"Publishing is already scheduled. ReleaseStatus: {scheduled.Id}");
                return(false);
            }

            var started = releaseStatuses.FirstOrDefault(status => status.State.Overall == Started);

            if (started != null)
            {
                _logger.LogError(
                    $"Validating {ValidationStage.ReleasePublishingStateNotScheduledOrStarted.ToString()} failed: " +
                    $"Publishing has already started. ReleaseStatus: {started.Id}");
                return(false);
            }

            return(true);
        }
コード例 #2
0
        private async Task MarkScheduledReleaseStatusAsSuperseded(NotifyChangeMessage message)
        {
            // There may be an existing scheduled ReleaseStatus entry if this release has been validated before
            // If so, mark it as superseded
            var scheduled = await _releaseStatusService.GetAllByOverallStage(message.ReleaseId, Scheduled);

            foreach (var releaseStatus in scheduled)
            {
                await _releaseStatusService.UpdateStateAsync(message.ReleaseId, releaseStatus.Id, SupersededState);
            }
        }