Esempio n. 1
0
        private bool EnsurePrTriggerDefaults(PullRequestTrigger target)
        {
            var hasChanges = false;

            if (!target.Forks.AllowSecrets)
            {
                target.Forks.AllowSecrets = true;
                hasChanges = true;
            }

            if (!target.Forks.Enabled)
            {
                target.Forks.Enabled = true;
                hasChanges           = true;
            }

            if (target.RequireCommentsForNonTeamMembersOnly)
            {
                target.RequireCommentsForNonTeamMembersOnly = false;
                hasChanges = true;
            }

            if (!target.IsCommentRequiredForPullRequest)
            {
                target.IsCommentRequiredForPullRequest = true;
                hasChanges = true;
            }

            return(hasChanges);
        }
Esempio n. 2
0
        private PullRequestTrigger GetDefaultPrTrigger()
        {
            var newTrigger = new PullRequestTrigger
            {
                Forks = new Forks {
                    AllowSecrets = true, Enabled = true
                },
                RequireCommentsForNonTeamMembersOnly = false,
                IsCommentRequiredForPullRequest      = true,
            };

            newTrigger.BranchFilters.Add("+master");

            return(newTrigger);
        }
Esempio n. 3
0
        protected bool EnsureDefautPullRequestTrigger(BuildDefinition definition, bool overrideYaml = true, bool securePipeline = true)
        {
            bool hasChanges = false;
            var  prTriggers = definition.Triggers.OfType <PullRequestTrigger>();

            if (prTriggers == default || !prTriggers.Any())
            {
                var newTrigger = new PullRequestTrigger();

                if (overrideYaml)
                {
                    newTrigger.SettingsSourceType = 1; // Override what is in the yaml file and use what is in the pipeline definition
                    newTrigger.BranchFilters.Add("+*");
                }
                else
                {
                    newTrigger.SettingsSourceType = 2; // Pull settings from yaml
                }

                newTrigger.Forks = new Forks
                {
                    AllowSecrets = securePipeline,
                    Enabled      = true
                };

                newTrigger.RequireCommentsForNonTeamMembersOnly = false;
                newTrigger.IsCommentRequiredForPullRequest      = securePipeline;

                definition.Triggers.Add(newTrigger);
                hasChanges = true;
            }
            else
            {
                foreach (var trigger in prTriggers)
                {
                    if (overrideYaml)
                    {
                        if (trigger.SettingsSourceType != 1 ||
                            trigger.BranchFilters.Contains("+*"))
                        {
                            // Override what is in the yaml file and use what is in the pipeline definition
                            trigger.SettingsSourceType = 1;
                            trigger.BranchFilters.Add("+*");
                        }
                    }
                    else
                    {
                        if (trigger.SettingsSourceType != 2)
                        {
                            // Pull settings from yaml
                            trigger.SettingsSourceType = 2;
                            hasChanges = true;
                        }
                    }
                    if (trigger.RequireCommentsForNonTeamMembersOnly != false ||
                        trigger.Forks.AllowSecrets != securePipeline ||
                        trigger.Forks.Enabled != true ||
                        trigger.IsCommentRequiredForPullRequest != securePipeline
                        )
                    {
                        trigger.Forks.AllowSecrets = securePipeline;
                        trigger.Forks.Enabled      = true;
                        trigger.RequireCommentsForNonTeamMembersOnly = false;
                        trigger.IsCommentRequiredForPullRequest      = securePipeline;

                        hasChanges = true;
                    }
                }
            }
            return(hasChanges);
        }
Esempio n. 4
0
        protected bool EnsureDefaultPullRequestTrigger(BuildDefinition definition, bool overrideYaml = true, bool securePipeline = true)
        {
            bool hasChanges = false;
            var  prTriggers = definition.Triggers.OfType <PullRequestTrigger>();

            if (prTriggers == default || !prTriggers.Any())
            {
                var newTrigger = new PullRequestTrigger();

                if (overrideYaml)
                {
                    newTrigger.SettingsSourceType = 1; // Override what is in the yaml file and use what is in the pipeline definition
                    newTrigger.BranchFilters.Add("+*");
                }
                else
                {
                    newTrigger.SettingsSourceType = 2; // Pull settings from yaml
                }

                newTrigger.Forks = new Forks
                {
                    AllowSecrets = securePipeline,
                    Enabled      = true
                };

                newTrigger.RequireCommentsForNonTeamMembersOnly = false;
                newTrigger.IsCommentRequiredForPullRequest      = securePipeline;

                definition.Triggers.Add(newTrigger);
                hasChanges = true;
            }
            else
            {
                foreach (var trigger in prTriggers)
                {
                    if (overrideYaml)
                    {
                        // Override what is in the yaml file and use what is in the pipeline definition
                        if (trigger.SettingsSourceType != 1)
                        {
                            trigger.SettingsSourceType = 1;
                            hasChanges = true;
                        }

                        // If any branch filters exist then overwrite them to the most generous filter.
                        // The filter should support all branches because PR triggers with a yaml override
                        // like this are expected to be manually invoked by `/azp run` comments, and these PRs
                        // may be targeting development branches.
                        if (!trigger.BranchFilters.SequenceEqual(new List <string> {
                            "+*"
                        }))
                        {
                            var filters = trigger.BranchFilters.Select(f => $"'{f}'");
                            Logger.LogInformation($"Overwriting branch filters ({String.Join(", ", filters)}) for PR trigger with '+*'");
                            trigger.BranchFilters.Clear();
                            trigger.BranchFilters.Add("+*");
                            hasChanges = true;
                        }
                    }
                    else if (trigger.SettingsSourceType != 2)
                    {
                        // Pull settings from yaml
                        trigger.SettingsSourceType = 2;
                        hasChanges = true;
                    }
                    if (trigger.RequireCommentsForNonTeamMembersOnly != false ||
                        trigger.Forks.AllowSecrets != securePipeline ||
                        trigger.Forks.Enabled != true ||
                        trigger.IsCommentRequiredForPullRequest != securePipeline
                        )
                    {
                        trigger.Forks.AllowSecrets = securePipeline;
                        trigger.Forks.Enabled      = true;
                        trigger.RequireCommentsForNonTeamMembersOnly = false;
                        trigger.IsCommentRequiredForPullRequest      = securePipeline;

                        hasChanges = true;
                    }
                }
            }
            return(hasChanges);
        }