8000 Allow Commit Notifications to be used as Workflow Build Steps. · github-cloud/github-plugin@731ffae · GitHub
[go: up one dir, main page]

Skip to content

Commit 731ffae

Browse files
Allow Commit Notifications to be used as Workflow Build Steps.
1 parent 5e14cca commit 731ffae

File tree

3 files changed

+28
-23
lines changed

3 files changed

+28
-23
lines changed

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

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package com.cloudbees.jenkins;
22

33
import hudson.Extension;
4+
import hudson.FilePath;
45
import hudson.Launcher;
56
import hudson.Util;
6-
import hudson.model.AbstractBuild;
77
import hudson.model.AbstractProject;
8-
import hudson.model.BuildListener;
98
import hudson.model.Result;
9+
import hudson.model.Run;
10+
import hudson.model.TaskListener;
1011
import hudson.tasks.BuildStepDescriptor;
1112
import hudson.tasks.BuildStepMonitor;
1213
import hudson.tasks.Notifier;
1314
import hudson.tasks.Publisher;
1415
import hudson.util.ListBoxModel;
16+
import jenkins.tasks.SimpleBuildStep;
17+
1518
import org.eclipse.jgit.lib.ObjectId;
1619
import org.jenkinsci.plugins.github.common.ExpandableMessage;
1720
import org.jenkinsci.plugins.github.util.BuildDataHelper;
@@ -41,7 +44,7 @@
4144
*
4245
* @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
4346
*/
44-
public class GitHubCommitNotifier extends Notifier {
47+
public class GitHubCommitNotifier extends Notifier implements SimpleBuildStep {
4548
private static final ExpandableMessage DEFAULT_MESSAGE = new ExpandableMessage("");
4649

4750
private ExpandableMessage statusMessage = DEFAULT_MESSAGE;
@@ -100,12 +103,12 @@ public BuildStepMonitor getRequiredMonitorService() {
100103
}
101104

102105
@Override
103-
public boolean perform(AbstractBuild<?, ?> build,
106+
public void perform(Run<?, ?> build,
107+
FilePath ws,
104108
Launcher launcher,
105-
BuildListener listener) throws InterruptedException, IOException {
109+
TaskListener listener) throws InterruptedException, IOException {
106110
try {
107111
updateCommitStatus(build, listener);
108-
return true;
109112
} catch (IOException error) {
110113
final Result buildResult = getEffectiveResultOnFailure();
111114
if (buildResult.equals(FAILURE)) {
@@ -118,19 +121,18 @@ public boolean perform(AbstractBuild<?, ?> build,
118121
build.setResult(buildResult);
119122
}
120123
}
121-
return true;
122124
}
123125

124-
private void updateCommitStatus(@Nonnull AbstractBuild<?, ?> build,
125-
@Nonnull BuildListener listener) throws InterruptedException, IOException {
126+
private void updateCommitStatus(@Nonnull Run<?, ?> build,
127+
@Nonnull TaskListener listener) throws InterruptedException, IOException {
126128
final String sha1 = ObjectId.toString(BuildDataHelper.getCommitSHA1(build));
127129

128130
StatusResult status = statusFrom(build);
129131
String message = defaultIfEmpty(firstNonNull(statusMessage, DEFAULT_MESSAGE)
130132
.expandAll(build, listener), status.getMsg());
131-
String contextName = displayNameFor(build.getProject());
133+
String contextName = displayNameFor(build.getParent());
132134

133-
for (GitHubRepositoryName name : GitHubRepositoryNameContributor.parseAssociatedNames(build.getProject())) {
135+
for (GitHubRepositoryName name : GitHubRepositoryNameContributor.parseAssociatedNames(build.getParent())) {
134136
for (GHRepository repository : name.resolve()) {
135137

136138
listener.getLogger().println(
@@ -146,7 +148,7 @@ private void updateCommitStatus(@Nonnull AbstractBuild<?, ?> build,
146148
}
147149
}
148150

149-
private static StatusResult statusFrom(@Nonnull AbstractBuild<?, ?> build) {
151+
private static StatusResult statusFrom(@Nonnull Run<?, ?> build) {
150152
Result result = build.getResult();
151153

152154
// We do not use `build.getDurationString()` because it appends 'and counting' (build is still running)

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

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.cloudbees.jenkins;
22

33
import hudson.Extension;
4+
import hudson.FilePath;
45
import hudson.Launcher;
5-
import hudson.model.AbstractBuild;
66
import hudson.model.AbstractProject;
7-
import hudson.model.BuildListener;
7+
import hudson.model.Run;
8+
import hudson.model.TaskListener;
89
import hudson.tasks.BuildStepDescriptor;
910
import hudson.tasks.Builder;
11+
import jenkins.tasks.SimpleBuildStep;
12+
1013
import org.eclipse.jgit.lib.ObjectId;
1114
import org.jenkinsci.plugins.github.common.ExpandableMessage;
1215
import org.jenkinsci.plugins.github.util.BuildDataHelper;
@@ -23,7 +26,7 @@
2326
import static org.apache.commons.lang3.StringUtils.defaultIfEmpty;
2427

2528
@Extension
26-
public class GitHubSetCommitStatusBuilder extends Builder {
29+
public class GitHubSetCommitStatusBuilder extends Builder implements SimpleBuildStep {
2730
private static final ExpandableMessage DEFAULT_MESSAGE = new ExpandableMessage("");
2831

2932
private ExpandableMessage statusMessage = DEFAULT_MESSAGE;
@@ -48,17 +51,18 @@ public void setStatusMessage(ExpandableMessage statusMessage) {
4851
}
4952

5053
@Override
51-
public boolean perform(AbstractBuild<?, ?> build,
52-
Launcher launcher,
53-
BuildListener listener) throws InterruptedException, IOException {
54+
public void perform(Run<?, ?> build,
55+
FilePath workspace,
56+
Launcher launcher,
57+
TaskListener listener) throws InterruptedException, IOException {
5458
final String sha1 = ObjectId.toString(BuildDataHelper.getCommitSHA1(build));
5559
String message = defaultIfEmpty(
5660
firstNonNull(statusMessage, DEFAULT_MESSAGE).expandAll(build, listener),
5761
Messages.CommitNotifier_Pending(build.getDisplayName())
5862
);
59-
String contextName = displayNameFor(build.getProject());
63+
String contextName = displayNameFor(build.getParent());
6064

61-
for (GitHubRepositoryName name : GitHubRepositoryNameContributor.parseAssociatedNames(build.getProject())) {
65+
for (GitHubRepositoryName name : GitHubRepositoryNameContributor.parseAssociatedNames(build.getParent())) {
6266
for (GHRepository repository : name.resolve()) {
6367
listener.getLogger().println(
6468
GitHubCommitNotifier_SettingCommitStatus(repository.getHtmlUrl() + "/commit/" + sha1)
@@ -70,7 +74,6 @@ public boolean perform(AbstractBuild<?, ?> build,
7074
contextName);
7175
}
7276
}
73-
return true;
7477
}
7578

7679
@Extension

src/main/java/org/jenkinsci/plugins/github/util/BuildDataHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.jenkinsci.plugins.github.util;
22

3-
import hudson.model.AbstractBuild;
3+
import hudson.model.Run;
44
import hudson.plugins.git.Revision;
55
import hudson.plugins.git.util.BuildData;
66
import org.eclipse.jgit.lib.ObjectId;
@@ -27,7 +27,7 @@ private BuildDataHelper() {
2727
* @throws IOException Cannot get the info about commit ID
2828
*/
2929
@Nonnull
30-
public static ObjectId getCommitSHA1(@Nonnull AbstractBuild<?, ?> build) throws IOException {
30+
public static ObjectId getCommitSHA1(@Nonnull Run<?, ?> build) throws IOException {
3131
BuildData buildData = build.getAction(BuildData.class);
3232
if (buildData == null) {
3333
throw new IOException(Messages.BuildDataHelper_NoBuildDataError());

0 commit comments

Comments
 (0)
0