diff --git a/src/main/java/com/cloudbees/jenkins/GitHubWebHook.java b/src/main/java/com/cloudbees/jenkins/GitHubWebHook.java index 3033771a2..8a3a24bfb 100644 --- a/src/main/java/com/cloudbees/jenkins/GitHubWebHook.java +++ b/src/main/java/com/cloudbees/jenkins/GitHubWebHook.java @@ -36,6 +36,7 @@ import static org.jenkinsci.plugins.github.util.FluentIterableWrapper.from; import static org.jenkinsci.plugins.github.util.JobInfoHelpers.isAlive; import static org.jenkinsci.plugins.github.util.JobInfoHelpers.isBuildable; +import static org.jenkinsci.plugins.github.util.JobInfoHelpers.isNotSCMSourceOwner; import static org.jenkinsci.plugins.github.webhook.WebhookManager.forHookUrl; @@ -104,6 +105,7 @@ public List reRegisterAllHooks() { return from(getJenkinsInstance().getAllItems(Item.class)) .filter(isBuildable()) .filter(isAlive()) + .filter(isNotSCMSourceOwner()) .transform(reRegisterHookForJob()) .toList(); } diff --git a/src/main/java/org/jenkinsci/plugins/github/util/JobInfoHelpers.java b/src/main/java/org/jenkinsci/plugins/github/util/JobInfoHelpers.java index c935f2f43..2867eb2dd 100644 --- a/src/main/java/org/jenkinsci/plugins/github/util/JobInfoHelpers.java +++ b/src/main/java/org/jenkinsci/plugins/github/util/JobInfoHelpers.java @@ -11,6 +11,7 @@ import hudson.triggers.Trigger; import hudson.triggers.TriggerDescriptor; import jenkins.model.ParameterizedJobMixIn; +import jenkins.scm.api.SCMSourceOwner; import org.jenkinsci.plugins.github.extension.GHEventsSubscriber; import javax.annotation.CheckForNull; @@ -141,5 +142,18 @@ protected Job asJob() { } }; } + + /** + * Can be useful to ignore child jobs on reregistering hooks + * + * @return predicate with true on apply if item is not a child of WorkflowMultiBranchProject + */ + public static Predicate isNotSCMSourceOwner() { + return new Predicate() { + public boolean apply(ITEM item) { + return !(item.getParent() instanceof SCMSourceOwner); + } + }; + } }