Skip to content

Commit 1a3914c

Browse files
authored
Add prune source, draft, and squash merge options when creating PR (#154)
1 parent 94e12c8 commit 1a3914c

File tree

8 files changed

+63
-15
lines changed

8 files changed

+63
-15
lines changed

src/main/java/com/gitee/jenkins/gitee/api/GiteeClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public interface GiteeClient {
1313

1414
User getCurrentUser();
1515

16-
void createPullRequest(PullRequest pr);
16+
void createPullRequest(PullRequest pr, boolean pruneSourceBranch, boolean draft, boolean squash);
1717

1818
List<Label> getLabels(String owner, String repo);
1919

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
package com.gitee.jenkins.gitee.api.impl;
22

3-
43
import java.util.List;
54

65
import com.gitee.jenkins.gitee.api.model.*;
76

8-
9-
107
interface GiteeApiProxy {
118
void createPullRequestNote(String owner, String repo, Integer pullRequestId, String body);
9+
1210
void headCurrentUser();
11+
1312
void acceptPullRequest(String owner, String repo, Integer pullRequestId);
14-
void createPullRequest(String owner, String repo, String title, String base, String head, String body);
13+
14+
void createPullRequest(String owner, String repo, String title, String base, String head, String body,
15+
Boolean pruneSourceBranch, Boolean draft, Boolean squash);
16+
1517
List<PullRequest> getPullRequest(String owner, String repo, String base, String head);
18+
1619
User getCurrentUser();
20+
1721
List<Label> getLabels(String owner, String repo);
1822
}

src/main/java/com/gitee/jenkins/gitee/api/impl/GiteeV5ApiProxy.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ void createPullRequest(@PathParam("ownerPath") String ownerPath,
4141
@FormParam("title") String title,
4242
@FormParam("base") String base,
4343
@FormParam("head") String head,
44-
@FormParam("body") String body);
44+
@FormParam("body") String body,
45+
@FormParam("prune_source_branch") Boolean pruneSourceBranch,
46+
@FormParam("draft") Boolean isDraft,
47+
@FormParam("squash") Boolean isSquashMerge);
4548

4649
@GET
4750
@Produces(MediaType.APPLICATION_JSON)

src/main/java/com/gitee/jenkins/gitee/api/impl/ResteasyGiteeClient.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
package com.gitee.jenkins.gitee.api.impl;
22

3-
43
import java.util.List;
54

65
import com.gitee.jenkins.gitee.api.GiteeClient;
76
import com.gitee.jenkins.gitee.api.model.*;
87
import com.google.common.base.Function;
98

10-
119
final class ResteasyGiteeClient implements GiteeClient {
1210
private final String hostUrl;
1311
private final GiteeApiProxy api;
1412
private final Function<PullRequest, Integer> pullRequestIdProvider;
1513

16-
1714
ResteasyGiteeClient(String hostUrl, GiteeApiProxy api, Function<PullRequest, Integer> pullRequestIdProvider) {
1815
this.hostUrl = hostUrl;
1916
this.api = api;
@@ -37,8 +34,9 @@ public void createPullRequestNote(PullRequest mr, String body) {
3734
}
3835

3936
@Override
40-
public void createPullRequest(PullRequest pr) {
41-
api.createPullRequest(pr.getRepoOwner(), pr.getRepoPath(), pr.getTitle(), pr.getTargetBranch(), pr.getSourceBranch(), pr.getDescription());
37+
public void createPullRequest(PullRequest pr, boolean pruneSourceBranch, boolean isDraft, boolean isSquashMerge) {
38+
api.createPullRequest(pr.getRepoOwner(), pr.getRepoPath(), pr.getTitle(), pr.getTargetBranch(),
39+
pr.getSourceBranch(), pr.getDescription(), pruneSourceBranch, isDraft, isSquashMerge);
4240
}
4341

4442
@Override

src/main/java/com/gitee/jenkins/publisher/GiteeCreatePullRequestPublisher.java

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ public class GiteeCreatePullRequestPublisher extends Notifier implements MatrixA
4848
private List<LabelNameEntry> labelNames = Collections.<LabelNameEntry>emptyList();
4949
private boolean addDatetime;
5050

51+
private boolean pruneSourceBranch = false;
52+
private boolean isDraft = false;
53+
private boolean isSquashMerge = false;
54+
5155
@DataBoundConstructor
5256
public GiteeCreatePullRequestPublisher() { }
5357

@@ -88,6 +92,18 @@ public List<LabelNameEntry> getLabelNames() {
8892
return labelNames;
8993
}
9094

95+
public boolean getPruneSourceBranch() {
96+
return pruneSourceBranch;
97+
}
98+
99+
public boolean getIsDraft() {
100+
return isDraft;
101+
}
102+
103+
public boolean getIsSquashMerge() {
104+
return isSquashMerge;
105+
}
106+
91107
@DataBoundSetter
92108
public void setRepo(String repo) {
93109
this.repo = repo;
@@ -128,6 +144,21 @@ public void setLabelNames(List<LabelNameEntry> labelNames) {
128144
this.labelNames = labelNames;
129145
}
130146

147+
@DataBoundSetter
148+
public void setPruneSourceBranch(boolean pruneSourceBranch) {
149+
this.pruneSourceBranch = pruneSourceBranch;
150+
}
151+
152+
@DataBoundSetter
153+
public void setIsDraft(boolean isDraft) {
154+
this.isDraft = isDraft;
155+
}
156+
157+
@DataBoundSetter
158+
public void setIsSquashMerge(boolean isSquashMerge) {
159+
this.isSquashMerge = isSquashMerge;
160+
}
161+
131162
@Override
132163
public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener)
133164
throws InterruptedException, IOException {
@@ -168,13 +199,13 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
168199
if (!client.getPullRequest(pr).isEmpty()) {
169200
LOGGER.log(Level.INFO, "Pull request {0} -> {1} already exists", LoggerUtil.toArray(head, base));
170201
if (launcher != null) {
171-
launcher.getListener().getLogger().println("Pull request {0} -> {1} already exists");
202+
launcher.getListener().getLogger().printf("Pull request {0} -> {1} already exists", head, base);
172203
}
173204

174205
return true;
175206
}
176207

177-
client.createPullRequest(pr);
208+
client.createPullRequest(pr, pruneSourceBranch, isDraft, isSquashMerge);
178209
LOGGER.log(Level.INFO, "Pull request {0} generated, {1} -> {2}", LoggerUtil.toArray(title, head, base));
179210
}
180211

src/main/resources/com/gitee/jenkins/publisher/GiteeCreatePullRequestPublisher/config.jelly

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,13 @@
2525
<f:entry title="${%Label.names}" field="labelNames">
2626
<f:repeatableHeteroProperty hasHeader="true" addCaption="${%Label.names}" />
2727
</f:entry>
28+
<f:entry title="${%Prune.source}" field="pruneSourceBranch">
29+
<f:checkbox/>
30+
</f:entry>
31+
<f:entry title="${%Is.draft}" field="isDraft">
32+
<f:checkbox/>
33+
</f:entry>
34+
<f:entry title="${%Squash.merge}" field="isSquashMerge">
35+
<f:checkbox/>
36+
</f:entry>
2837
</j:jelly>

src/main/resources/com/gitee/jenkins/publisher/GiteeCreatePullRequestPublisher/config.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@ Add.datetime=Add datetime (keep unique)
55
Target.branch=Target branch
66
Source.branch=Source branch
77
body=Description
8-
Label.names=Label Names
8+
Label.names=Label Names
9+
Prune.source=Prune Source Branch
10+
Is.draft=Set as Draft
11+
Squash.merge=Squash when merged

src/test/java/com/gitee/jenkins/trigger/handler/pull/PullRequestHookTriggerHandlerImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -999,7 +999,7 @@ public User getCurrentUser() {
999999
}
10001000

10011001
@Override
1002-
public void createPullRequest(PullRequest pr) {
1002+
public void createPullRequest(PullRequest pr, boolean pruneSourceBranch, boolean isDraft, boolean isSquashMerge) {
10031003
throw new UnsupportedOperationException("Unimplemented method 'createPullRequest'");
10041004
}
10051005

0 commit comments

Comments
 (0)