Skip to content

Commit da993ac

Browse files
committed
[JENKINS-12524] Compliance with Multiple SCMs Plugin
1 parent 64482a8 commit da993ac

2 files changed

Lines changed: 90 additions & 67 deletions

File tree

pom.xml

Lines changed: 57 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,59 +6,65 @@
66
<version>1.445</version>
77
</parent>
88

9-
<groupId>com.coravy.hudson.plugins.github</groupId>
10-
<artifactId>github</artifactId>
11-
<packaging>hpi</packaging>
12-
<version>1.1-SNAPSHOT</version>
13-
<name>GitHub plugin</name>
14-
<url>http://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin</url>
9+
<groupId>com.coravy.hudson.plugins.github</groupId>
10+
<artifactId>github</artifactId>
11+
<packaging>hpi</packaging>
12+
<version>1.1-SNAPSHOT</version>
13+
<name>GitHub plugin</name>
14+
<url>http://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin</url>
1515

16-
<repositories>
17-
<repository>
18-
<id>jgit-repository</id>
19-
<name>Eclipse JGit Repository</name>
20-
<url>http://download.eclipse.org/jgit/maven</url>
21-
</repository>
22-
</repositories>
16+
<repositories>
17+
<repository>
18+
<id>jgit-repository</id>
19+
<name>Eclipse JGit Repository</name>
20+
<url>http://download.eclipse.org/jgit/maven</url>
21+
</repository>
22+
</repositories>
2323

24-
<developers>
25-
<developer>
26-
<id>kohsuke</id>
27-
<name>Kohsuke Kawaguchi</name>
28-
</developer>
29-
<developer>
30-
<id>juretta</id>
31-
<name>Stefan Saasen</name>
32-
</developer>
33-
</developers>
24+
<developers>
25+
<developer>
26+
<id>kohsuke</id>
27+
<name>Kohsuke Kawaguchi</name>
28+
</developer>
29+
<developer>
30+
<id>juretta</id>
31+
<name>Stefan Saasen</name>
32+
</developer>
33+
</developers>
3434

35-
<dependencies>
36-
<dependency>
37-
<groupId>org.jenkins-ci.plugins</groupId>
38-
<artifactId>github-api</artifactId>
39-
<version>1.16</version>
40-
</dependency>
41-
<dependency>
42-
<groupId>org.jenkinsci.plugins</groupId>
43-
<artifactId>git</artifactId>
44-
<version>1.1.12</version>
45-
</dependency>
46-
<dependency>
47-
<groupId>org.jmock</groupId>
48-
<artifactId>jmock-junit4</artifactId>
49-
<version>2.5.1</version>
50-
<scope>test</scope>
51-
</dependency>
52-
<dependency>
53-
<groupId>org.eclipse.jgit</groupId>
54-
<artifactId>org.eclipse.jgit</artifactId>
55-
<version>0.12.1</version>
56-
</dependency>
57-
</dependencies>
35+
<dependencies>
36+
<dependency>
37+
<groupId>org.jenkins-ci.plugins</groupId>
38+
<artifactId>github-api</artifactId>
39+
<version>1.16</version>
40+
</dependency>
41+
<dependency>
42+
<groupId>org.jenkinsci.plugins</groupId>
43+
<artifactId>git</artifactId>
44+
<version>1.1.12</version>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.jmock</groupId>
48+
<artifactId>jmock-junit4</artifactId>
49+
<version>2.5.1</version>
50+
<scope>test</scope>
51+
</dependency>
52+
<dependency>
53+
<groupId>org.eclipse.jgit</groupId>
54+
<artifactId>org.eclipse.jgit</artifactId>
55+
<version>0.12.1</version>
56+
</dependency>
57+
<dependency>
58+
<groupId>org.jenkins-ci.plugins</groupId>
59+
<artifactId>multiple-scms</artifactId>
60+
<version>0.2</version>
61+
<optional>true</optional>
62+
</dependency>
63+
</dependencies>
5864

59-
<scm>
60-
<connection>scm:git:git://github.com/jenkinsci/github-plugin.git</connection>
61-
<developerConnection>scm:git:[email protected]:jenkinsci/github-plugin.git</developerConnection>
62-
<url>https://github.com/jenkinsci/github-plugin</url>
63-
</scm>
65+
<scm>
66+
<connection>scm:git:git://github.com/jenkinsci/github-plugin.git</connection>
67+
<developerConnection>scm:git:[email protected]:jenkinsci/github-plugin.git</developerConnection>
68+
<url>https://github.com/jenkinsci/github-plugin</url>
69+
</scm>
6470
</project>

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

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,17 @@
33
import hudson.Extension;
44
import hudson.Util;
55
import hudson.console.AnnotatedLargeText;
6-
import hudson.model.AbstractProject;
76
import hudson.model.Action;
87
import hudson.model.Hudson;
98
import hudson.model.Item;
9+
import hudson.model.AbstractProject;
1010
import hudson.model.Project;
1111
import hudson.plugins.git.GitSCM;
1212
import hudson.scm.SCM;
1313
import hudson.triggers.Trigger;
1414
import hudson.triggers.TriggerDescriptor;
1515
import hudson.util.SequentialExecutionQueue;
1616
import hudson.util.StreamTaskListener;
17-
import net.sf.json.JSONObject;
18-
import org.apache.commons.jelly.XMLOutput;
19-
import org.kohsuke.github.GHRepository;
20-
import org.kohsuke.stapler.DataBoundConstructor;
21-
import org.kohsuke.stapler.StaplerRequest;
22-
import org.eclipse.jgit.transport.RemoteConfig;
23-
import org.eclipse.jgit.transport.URIish;
2417

2518
import java.io.File;
2619
import java.io.IOException;
@@ -39,8 +32,16 @@
3932
import java.util.concurrent.Executors;
4033
import java.util.logging.Level;
4134
import java.util.logging.Logger;
42-
import java.util.regex.Matcher;
43-
import java.util.regex.Pattern;
35+
36+
import net.sf.json.JSONObject;
37+
38+
import org.apache.commons.jelly.XMLOutput;
39+
import org.eclipse.jgit.transport.RemoteConfig;
40+
import org.eclipse.jgit.transport.URIish;
41+
import org.jenkinsci.plugins.multiplescms.MultiSCM;
42+
import org.kohsuke.github.GHRepository;
43+
import org.kohsuke.stapler.DataBoundConstructor;
44+
import org.kohsuke.stapler.StaplerRequest;
4445

4546
/**
4647
* Triggers a build when we receive a GitHub post-commit webhook.
@@ -91,24 +92,40 @@ public void run() {
9192
}
9293

9394
/**
94-
* Does this project read from a repository of the given user name and the given repository name?
95+
* Does this project read from a repository of the given user name and the
96+
* given repository name?
9597
*/
9698
public Set<GitHubRepositoryName> getGitHubRepositories() {
9799
Set<GitHubRepositoryName> r = new HashSet<GitHubRepositoryName>();
98-
SCM scm = job.getScm();
100+
if (Hudson.getInstance().getPlugin("multiple-scms") != null
101+
&& job.getScm() instanceof MultiSCM) {
102+
MultiSCM multiSCM = (MultiSCM) job.getScm();
103+
List<SCM> scmList = multiSCM.getConfiguredSCMs();
104+
for (SCM scm : scmList) {
105+
addRepositories(r, scm);
106+
}
107+
} else {
108+
addRepositories(r, job.getScm());
109+
}
110+
return r;
111+
}
112+
113+
/**
114+
* @since 1.1
115+
*/
116+
protected void addRepositories(Set<GitHubRepositoryName> r, SCM scm) {
99117
if (scm instanceof GitSCM) {
100118
GitSCM git = (GitSCM) scm;
101119
for (RemoteConfig rc : git.getRepositories()) {
102120
for (URIish uri : rc.getURIs()) {
103121
String url = uri.toString();
104-
GitHubRepositoryName repo = GitHubRepositoryName.create(uri
105-
.toString());
106-
if (repo != null)
122+
GitHubRepositoryName repo = GitHubRepositoryName.create(url);
123+
if (repo != null) {
107124
r.add(repo);
125+
}
108126
}
109127
}
110128
}
111-
return r;
112129
}
113130

114131
@Override

0 commit comments

Comments
 (0)