Skip to content

Commit 1e3be7d

Browse files
committed
refactored plugin to support triggering from different sources such as the github-sqs-plugin
1 parent 1ace8d4 commit 1e3be7d

4 files changed

Lines changed: 27 additions & 4 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ target
77
*.iml
88
*.ipr
99
*.iws
10+
.idea/

src/main/java/com/cloudbees/jenkins/GitHubPushTrigger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
*
4949
* @author Kohsuke Kawaguchi
5050
*/
51-
public class GitHubPushTrigger extends Trigger<AbstractProject> implements Runnable {
51+
public class GitHubPushTrigger extends Trigger<AbstractProject> implements GitHubTrigger, Runnable {
5252
@DataBoundConstructor
5353
public GitHubPushTrigger() {
5454
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.cloudbees.jenkins;
2+
3+
import hudson.model.AbstractProject;
4+
import hudson.triggers.Trigger;
5+
6+
import java.util.Set;
7+
8+
/**
9+
* Used to trigger builds that use github repos
10+
*
11+
* @author aaronwalker
12+
*/
13+
public interface GitHubTrigger {
14+
15+
public void onPost();
16+
public Set<GitHubRepositoryName> getGitHubRepositories();
17+
}

src/main/java/com/cloudbees/jenkins/GitHubWebHook.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import hudson.model.RootAction;
99
import hudson.model.UnprotectedRootAction;
1010
import hudson.security.ACL;
11+
import hudson.triggers.Trigger;
1112
import hudson.util.AdaptedIterator;
1213
import hudson.util.Iterators.FilterIterator;
1314
import net.sf.json.JSONObject;
@@ -145,7 +146,11 @@ protected boolean filter(GitHub g) {
145146
* 1 push to 2 branches will result in 2 pushes.
146147
*/
147148
public void doIndex(StaplerRequest req) {
148-
JSONObject o = JSONObject.fromObject(req.getParameter("payload"));
149+
processGitHubPayload(req.getParameter("payload"),GitHubPushTrigger.class);
150+
}
151+
152+
public void processGitHubPayload(String payload, Class<? extends Trigger> triggerClass) {
153+
JSONObject o = JSONObject.fromObject(payload);
149154
JSONObject repository = o.getJSONObject("repository");
150155
String repoUrl = repository.getString("url"); // something like 'https://github.com/kohsuke/foo'
151156
String repoName = repository.getString("name"); // 'foo' portion of the above URL
@@ -163,9 +168,9 @@ public void doIndex(StaplerRequest req) {
163168
try {
164169
GitHubRepositoryName changedRepository = new GitHubRepositoryName(matcher.group(1), ownerName, repoName);
165170
for (AbstractProject<?,?> job : Hudson.getInstance().getAllItems(AbstractProject.class)) {
166-
GitHubPushTrigger trigger = job.getTrigger(GitHubPushTrigger.class);
171+
GitHubTrigger trigger = (GitHubTrigger) job.getTrigger(triggerClass);
167172
if (trigger!=null) {
168-
LOGGER.fine("Considering to poke "+job.getFullDisplayName());
173+
LOGGER.info("Considering to poke "+job.getFullDisplayName());
169174
if (trigger.getGitHubRepositories().contains(changedRepository))
170175
trigger.onPost();
171176
else

0 commit comments

Comments
 (0)