Exemplo n.º 1
0
        public async Task RunAsync(IAzureDevOpsClient azDoclient, GitPushEventPayload payload)
        {
            _logger.LogInformation(new EventId(1, "RunningPolicies"), "Running policies for {RepositoryId} with {UpdateCount}", payload.Resource.Repository.Id, payload.Resource.RefUpdates.Count);

            //run policies serially to avoid race conditions in AzDO like duplicate pull request creation.
            foreach (var policy in _policies)
            {
                _logger.LogDebug(new EventId(2, "RunningPolicy"), "Running {Policy}", policy.Name);
                foreach (var update in payload.Resource.RefUpdates)
                {
                    if (IsNewBranch(update.OldObjectId))
                    {
                        _logger.LogInformation(new EventId(2, "SkippingNewBranch"), "Skipping new branch push");
                        continue;
                    }

                    var context = new MergePolicyContext(azDoclient, update, payload);
                    try
                    {
                        await policy.HandleAsync(context);
                    }
                    catch (Exception e)
                    {
                        _logger.LogError(new EventId(7, "PolicyFailure"), e, "Policy {@Policy} for {RepositoryId} failed: {Message}", policy, payload.Resource.Repository.Id, e.Message);
                    }
                }
            }
        }
Exemplo n.º 2
0
 public Task RunAsync(IAzureDevOpsClient azDoclient, GitPushEventPayload payload)
 {
     return(Task.CompletedTask);
 }