2222import java .io .StringReader ;
2323import java .util .Collections ;
2424import java .util .HashSet ;
25- import java .util .Optional ;
25+ import java .util .List ;
2626import java .util .Set ;
27+ import java .util .stream .Collectors ;
2728
2829/**
2930 * Listens for GitHub events.
@@ -95,36 +96,33 @@ private void handleIssueComment(final GHSubscriberEvent event) {
9596 }
9697
9798 // create key for this comment's PR
98- String key = String .format ("%s/%s/%d" ,
99+ final String key = String .format ("%s/%s/%d" ,
99100 issueCommentEvent .getRepository ().getOwnerName (),
100101 issueCommentEvent .getRepository ().getName (),
101102 issueCommentEvent .getIssue ().getNumber ());
102103
103104 // lookup trigger
104- IssueCommentTrigger .DescriptorImpl triggerDescriptor =
105- (IssueCommentTrigger .DescriptorImpl ) Jenkins .getInstance ()
105+ final IssueCommentTrigger .DescriptorImpl triggerDescriptor = (IssueCommentTrigger .DescriptorImpl ) Jenkins .get ()
106106 .getDescriptor (IssueCommentTrigger .class );
107107
108108 if (triggerDescriptor == null ) {
109109 LOG .error ("Unable to find the IssueComment Trigger, this shouldn't happen." );
110110 return ;
111111 }
112112
113- // lookup job
114- WorkflowJob job = triggerDescriptor .getJob (key );
115-
116- if (job == null ) {
117- LOG .debug ("No job found matching key: {}" , key );
118- } else {
119- Optional <IssueCommentTrigger > matchingTrigger = job .getTriggersJobProperty ()
113+ // lookup jobs
114+ for (final WorkflowJob job : triggerDescriptor .getJobs (key )) {
115+ // find triggers
116+ final List <IssueCommentTrigger > matchingTriggers = job .getTriggersJobProperty ()
120117 .getTriggers ()
121118 .stream ()
122- .filter (t -> t instanceof IssueCommentTrigger )
119+ .filter (IssueCommentTrigger . class :: isInstance )
123120 .map (IssueCommentTrigger .class ::cast )
124121 .filter (t -> triggerMatches (t , issueCommentEvent .getComment (), job ))
125- .findAny ( );
122+ .collect ( Collectors . toList () );
126123
127- if (matchingTrigger .isPresent ()) {
124+ // check if they have authorization
125+ for (final IssueCommentTrigger matchingTrigger : matchingTriggers ) {
128126 String commentAuthor = issueCommentEvent .getComment ().getUserName ();
129127 boolean authorized = isAuthorized (job , commentAuthor );
130128
@@ -133,19 +131,16 @@ private void handleIssueComment(final GHSubscriberEvent event) {
133131 new IssueCommentCause (
134132 issueCommentEvent .getComment ().getUserName (),
135133 issueCommentEvent .getComment ().getBody (),
136- matchingTrigger .get (). getCommentPattern ()));
134+ matchingTrigger .getCommentPattern ()));
137135 LOG .info ("Job: {} triggered by IssueComment: {}" ,
138136 job .getFullName (), issueCommentEvent .getComment ());
139137 } else {
140138 LOG .warn ("Job: {}, IssueComment: {}, Comment Author: {} is not a collaborator, " +
141- "and is therefore not authorized to trigger a build." ,
139+ "and is therefore not authorized to trigger a build." ,
142140 job .getFullName (),
143141 issueCommentEvent .getComment (),
144142 commentAuthor );
145143 }
146- } else {
147- LOG .debug ("Job: {}, IssueComment: {}, No matching triggers could be found for this comment." ,
148- job .getFullName (), issueCommentEvent .getComment ());
149144 }
150145 }
151146 }
@@ -175,7 +170,7 @@ private boolean triggerMatches(final IssueCommentTrigger trigger,
175170
176171 @ Override
177172 protected Set <GHEvent > events () {
178- Set <GHEvent > events = new HashSet <>();
173+ final Set <GHEvent > events = new HashSet <>();
179174// events.add(GHEvent.PULL_REQUEST_REVIEW_COMMENT);
180175// events.add(GHEvent.COMMIT_COMMENT);
181176 events .add (GHEvent .ISSUE_COMMENT );
0 commit comments