8000 changing status error handler · github-cloud/github-plugin@11c3ba0 · GitHub
[go: up one dir, main page]

Skip to content

Commit 11c3ba0

Browse files
committed
changing status error handler
1 parent 4a08364 commit 11c3ba0

File tree

7 files changed

+91
-8
lines changed

7 files changed

+91
-8
lines changed

src/main/java/org/jenkinsci/plugins/github/common/CombineErrorHandler.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
import hudson.model.Run;
44
import hudson.model.TaskListener;
5-
import org.apache.commons.collections.CollectionUtils;
65
import org.slf4j.Logger;
76
import org.slf4j.LoggerFactory;
87

98
import javax.annotation.Nonnull;
109
import java.util.ArrayList;
1110
import java.util.List;
1211

12+
import static org.apache.commons.collections.CollectionUtils.isNotEmpty;
13+
1314
/**
1415
* @author lanwen (Merkushev Kirill)
1516
*/
@@ -26,27 +27,28 @@ public static CombineErrorHandler errorHandling() {
2627
}
2728

2829
public CombineErrorHandler withHandlers(List<? extends ErrorHandler> handlers) {
29-
if (CollectionUtils.isEmpty(handlers)) {
30+
if (isNotEmpty(handlers)) {
3031
this.handlers.addAll(handlers);
3132
}
3233
return this;
3334
}
3435

3536
@Override
3637
public boolean handle(Exception e, @Nonnull Run<?, ?> run, @Nonnull TaskListener listener) {
37-
LOG.debug("Exception in {} ({})", run.getParent().getName(), e.getMessage(), e);
38+
LOG.debug("Exception in {} will be processed with {} handlers",
39+
run.getParent().getName(), handlers.size(), e);
3840
try {
3941
for (ErrorHandler next : handlers) {
4042
if (next.handle(e, run, listener)) {
41-
LOG.debug("Exception in {} ({}) handled by {}",
43+
LOG.debug("Exception in {} [{}] handled by [{}]",
4244
run.getParent().getName(),
4345
e.getMessage(),
4446
next.getClass());
4547
return true;
4648
}
4749
}
4850
} catch (Exception unhandled) {
49-
LOG.error("Exception in {} ({}) unhandled", run.getParent().getName(), unhandled.getMessage(), unhandled);
51+
LOG.error("Exception in {} unhandled", run.getParent().getName(), unhandled);
5052
throw new ErrorHandlingException(unhandled);
5153
}
5254

src/main/java/org/jenkinsci/plugins/github/extension/status/GitHubStatusResultSource.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
import org.kohsuke.github.GHCommitState;
88

99
import javax.annotation.Nonnull;
10+
import java.io.IOException;
1011

1112
/**
1213
* @author lanwen (Merkushev Kirill)
1314
*/
1415
public abstract class GitHubStatusResultSource extends AbstractDescribableImpl<GitHubStatusResultSource>
1516
implements ExtensionPoint {
1617

17-
public abstract StatusResult get(@Nonnull Run<?, ?> run, @Nonnull TaskListener listener);
18+
public abstract StatusResult get(@Nonnull Run<?, ?> run, @Nonnull TaskListener listener)
19+
throws IOException, InterruptedException;
1820

1921
public static class StatusResult {
2022
private GHCommitState state;

src/main/java/org/jenkinsci/plugins/github/status/GitHubCommitStatusSetter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import java.util.ArrayList;
3131
import java.util.List;
3232

33+
import static com.cloudbees.jenkins.Messages.GitHubCommitNotifier_SettingCommitStatus;
34+
3335
/**
3436
* @author lanwen (Merkushev Kirill)
3537
*/
@@ -106,6 +108,10 @@ public void perform(@Nonnull Run<?, ?> run, @Nonnull FilePath workspace, @Nonnul
106108
GHCommitState state = result.getState();
107109

108110
for (GHRepository repo : repos) {
111+
listener.getLogger().println(
112+
GitHubCommitNotifier_SettingCommitStatus(repo.getHtmlUrl() + "/commit/" + sha)
113+
);
114+
109115
repo.createCommitStatus(sha, state, backref, message, contextName);
110116
}
111117

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package org.jenkinsci.plugins.github.status.err;
2+
3+
import hudson.Extension;
4+
import hudson.model.Descriptor;
5+
import hudson.model.Result;
6+
import hudson.model.Run;
7+
import hudson.model.TaskListener;
8+
import hudson.util.ListBoxModel;
9+
import org.jenkinsci.plugins.github.extension.status.StatusErrorHandler;
10+
import org.kohsuke.stapler.DataBoundConstructor;
11+
12+
import javax.annotation.Nonnull;
13+
14+
import static hudson.model.Result.FAILURE;
15+
import static hudson.model.Result.UNSTABLE;
16+
import static org.apache.commons.lang3.StringUtils.trimToEmpty;
17+
18+
/**
19+
* @author lanwen (Merkushev Kirill)
20+
*/
21+
public class ChangingBuildStatusErrorHandler extends StatusErrorHandler {
22+
23+< F438 /span>
private String result;
24+
25+
@DataBoundConstructor
26+
public ChangingBuildStatusErrorHandler(String result) {
27+
this.result = result;
28+
}
29+
30+
public String getResult() {
31+
return result;
32+
}
33+
34+
@Override
35+
public boolean handle(Exception e, @Nonnull Run<?, ?> run, @Nonnull TaskListener listener) {
36+
Result toSet = Result.fromString(trimToEmpty(result));
37+
38+
listener.error("[GitHub Commit Status Setter] - %s, setting build result to %s", e.getMessage(), toSet);
39+
40+
run.setResult(toSet);
41+
return true;
42+
}
43+
44+
@Extension
45+
public static class ChangingBuildStatusErrorHandlerDescriptor extends Descriptor<StatusErrorHandler> {
46+
private static final Result[] SUPPORTED_RESULTS = {
47+
FAILURE,
48+
UNSTABLE
49+
};
50+
51+
@Override
52+
public String getDisplayName() {
53+
return "Change build status";
54+
}
55+
56+
@SuppressWarnings("unused")
57+
public ListBoxModel doFillResultItems() {
58+
ListBoxModel items = new ListBoxModel();
59+
for (Result result : SUPPORTED_RESULTS) {
60+
items.add(result.toString());
61+
}
62+
return items;
63+
}
64+
}
65+
}

src/main/java/org/jenkinsci/plugins/github/status/err/ShallowAnyErrorHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public ShallowAnyErrorHandler() {
2020

2121
@Override
2222
public boolean handle(Exception e, @Nonnull Run<?, ?> run, @Nonnull TaskListener listener) {
23-
listener.error("Exception with status setter (%s) ignored", e.getMessage());
23+
listener.error("[GitHub Commit Status Setter] Failed to update commit status on GitHub. " +
24+
"Ignoring exception [%s]", e.getMessage());
2425
return true;
2526
}
2627

src/main/resources/org/jenkinsci/plugins/github/status/GitHubCommitStatusSetter/config.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ f.advanced {
2727
f.hetero_list(items: CollectionUtils.isEmpty(instance?.errorHandlers)
2828
? []
2929
: instance.errorHandlers,
30-
addCaption: 'Add handler',
30+
addCaption: 'Add error handler',
3131
name: 'errorHandlers',
3232
oneEach: true, hasHeader: true, descriptors: StatusErrorHandler.all())
3333
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.jenkinsci.plugins.github.status.err.ChangingBuildStatusErrorHandler
2+
3+
def f = namespace(lib.FormTagLib);
4+
5+
f.entry(title: _('Result on failure'), field: 'result') {
6+
f.select()
7+
}

0 commit comments

Comments
 (0)
0