Skip to content

Commit ccbfd70

Browse files
committed
Add the name of the user who pushed to Github into the log.
1 parent d44819d commit ccbfd70

4 files changed

Lines changed: 57 additions & 34 deletions

File tree

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,23 @@
88
* @author Kohsuke Kawaguchi
99
*/
1010
public class GitHubPushCause extends SCMTriggerCause {
11+
/**
12+
* The name of the user who pushed to GitHub.
13+
*/
14+
private String pushedBy;
15+
16+
public GitHubPushCause(String pusher) {
17+
this("", pusher);
18+
}
19+
20+
public GitHubPushCause(String pollingLog, String pusher) {
21+
super(pollingLog);
22+
pushedBy = pusher;
23+
}
24+
1125
@Override
1226
public String getShortDescription() {
13-
return "Started by GitHub push by ";
27+
String pusher = pushedBy != null ? pushedBy : "";
28+
return "Started by GitHub push by " + pusher;
1429
}
1530
}

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

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import org.eclipse.jgit.transport.URIish;
4141
import org.jenkinsci.plugins.multiplescms.MultiSCM;
4242
import org.kohsuke.github.GHException;
43-
import org.kohsuke.github.GHHook;
4443
import org.kohsuke.github.GHRepository;
4544
import org.kohsuke.stapler.DataBoundConstructor;
4645
import org.kohsuke.stapler.StaplerRequest;
@@ -50,16 +49,49 @@
5049
*
5150
* @author Kohsuke Kawaguchi
5251
*/
53-
public class GitHubPushTrigger extends Trigger<AbstractProject> implements GitHubTrigger, Runnable {
52+
public class GitHubPushTrigger extends Trigger<AbstractProject<?,?>> implements GitHubTrigger {
5453
@DataBoundConstructor
5554
public GitHubPushTrigger() {
5655
}
5756

5857
/**
5958
* Called when a POST is made.
6059
*/
60+
@Deprecated
6161
public void onPost() {
62-
getDescriptor().queue.execute(this);
62+
onPost("");
63+
}
64+
65+
/**
66+
* Called when a POST is made.
67+
*/
68+
public void onPost(String triggeredByUser) {
69+
final String pushBy = triggeredByUser;
70+
getDescriptor().queue.execute(new Runnable() {
71+
public void run() {
72+
try {
73+
StreamTaskListener listener = new StreamTaskListener(getLogFile());
74+
75+
try {
76+
PrintStream logger = listener.getLogger();
77+
long start = System.currentTimeMillis();
78+
logger.println("Started on "+ DateFormat.getDateTimeInstance().format(new Date()));
79+
boolean result = job.poll(listener).hasChanges();
80+
logger.println("Done. Took "+ Util.getTimeSpanString(System.currentTimeMillis()-start));
81+
if(result) {
82+
logger.println("Changes found");
83+
job.scheduleBuild(new GitHubPushCause(pushBy));
84+
} else {
85+
logger.println("No changes");
86+
}
87+
} finally {
88+
listener.close();
89+
}
90+
} catch (IOException e) {
91+
LOGGER.log(Level.SEVERE,"Failed to record SCM polling",e);
92+
}
93+
}
94+
});
6395
}
6496

6597
/**
@@ -69,30 +101,6 @@ public File getLogFile() {
69101
return new File(job.getRootDir(),"github-polling.log");
70102
}
71103

72-
public void run() {
73-
try {
74-
StreamTaskListener listener = new StreamTaskListener(getLogFile());
75-
76-
try {
77-
PrintStream logger = listener.getLogger();
78-
long start = System.currentTimeMillis();
79-
logger.println("Started on "+ DateFormat.getDateTimeInstance().format(new Date()));
80-
boolean result = job.poll(listener).hasChanges();
81-
logger.println("Done. Took "+ Util.getTimeSpanString(System.currentTimeMillis()-start));
82-
if(result) {
83-
logger.println("Changes found");
84-
job.scheduleBuild(new GitHubPushCause());
85-
} else {
86-
logger.println("No changes");
87-
}
88-
} finally {
89-
listener.close();
90-
}
91-
} catch (IOException e) {
92-
LOGGER.log(Level.SEVERE,"Failed to record SCM polling",e);
93-
}
94-
}
95-
96104
/**
97105
* Does this project read from a repository of the given user name and the
98106
* given repository name?
@@ -131,7 +139,7 @@ protected void addRepositories(Set<GitHubRepositoryName> r, SCM scm) {
131139
}
132140

133141
@Override
134-
public void start(AbstractProject project, boolean newInstance) {
142+
public void start(AbstractProject<?,?> project, boolean newInstance) {
135143
super.start(project, newInstance);
136144
if (newInstance && getDescriptor().isManageHook()) {
137145
// make sure we have hooks installed. do this lazily to avoid blocking the UI thread.
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package com.cloudbees.jenkins;
22

3-
import hudson.model.AbstractProject;
4-
import hudson.triggers.Trigger;
5-
63
import java.util.Set;
74

85
/**
@@ -12,6 +9,8 @@
129
*/
1310
public interface GitHubTrigger {
1411

12+
@Deprecated
1513
public void onPost();
14+
public void onPost(String triggeredByUser);
1615
public Set<GitHubRepositoryName> getGitHubRepositories();
1716
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,13 @@ public void doIndex(StaplerRequest req) {
149149
processGitHubPayload(req.getParameter("payload"),GitHubPushTrigger.class);
150150
}
151151

152-
public void processGitHubPayload(String payload, Class<? extends Trigger> triggerClass) {
152+
public void processGitHubPayload(String payload, Class<? extends Trigger<?>> triggerClass) {
153153
JSONObject o = JSONObject.fromObject(payload);
154154
JSONObject repository = o.getJSONObject("repository");
155155
String repoUrl = repository.getString("url"); // something like 'https://github.com/kohsuke/foo'
156156
String repoName = repository.getString("name"); // 'foo' portion of the above URL
157157
String ownerName = repository.getJSONObject("owner").getString("name"); // 'kohsuke' portion of the above URL
158+
String pusherName = o.getJSONObject("pusher").getString("name");
158159

159160
LOGGER.info("Received POST for "+repoUrl);
160161
LOGGER.fine("Full details of the POST was "+o.toString());
@@ -173,7 +174,7 @@ public void processGitHubPayload(String payload, Class<? extends Trigger> trigge
173174
LOGGER.fine("Considering to poke "+job.getFullDisplayName());
174175
if (trigger.getGitHubRepositories().contains(changedRepository)) {
175176
LOGGER.info("Poked "+job.getFullDisplayName());
176-
trigger.onPost();
177+
trigger.onPost(pusherName);
177178
} else
178179
LOGGER.fine("Skipped "+job.getFullDisplayName()+" because it doesn't have a matching repository.");
179180
}

0 commit comments

Comments
 (0)