Skip to content

Commit aa66886

Browse files
mifitouscoreegorirrandon
authored
Discover MR from forked projects & Add build status name overwrite option (#257)
Co-authored-by: Egor Abramov <[email protected]> Co-authored-by: Irrandon <[email protected]> Resolves #167
1 parent dc12a4a commit aa66886

File tree

17 files changed

+484
-377
lines changed

17 files changed

+484
-377
lines changed

src/main/java/io/jenkins/plugins/gitlabbranchsource/BuildStatusNameCustomPartTrait.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public class BuildStatusNameCustomPartTrait extends SCMSourceTrait {
1515
@NonNull
1616
private String buildStatusNameCustomPart = "";
1717

18+
private boolean buildStatusNameOverwrite;
19+
1820
/**
1921
* Constructor for stapler.
2022
*/
@@ -31,11 +33,17 @@ public void setBuildStatusNameCustomPart(@NonNull String buildStatusNameCustomPa
3133
this.buildStatusNameCustomPart = buildStatusNameCustomPart;
3234
}
3335

36+
@DataBoundSetter
37+
public void setBuildStatusNameOverwrite(@NonNull Boolean buildStatusNameOverwrite) {
38+
this.buildStatusNameOverwrite = buildStatusNameOverwrite;
39+
}
40+
3441
@Override
3542
protected void decorateContext(SCMSourceContext<?, ?> context) {
3643
if (context instanceof GitLabSCMSourceContext) {
3744
GitLabSCMSourceContext ctx = (GitLabSCMSourceContext) context;
3845
ctx.withBuildStatusNameCustomPart(getBuildStatusNameCustomPart());
46+
ctx.withBuildStatusNameOverwrite(getBuildStatusNameOverwrite());
3947
}
4048
}
4149

@@ -49,6 +57,13 @@ public String getBuildStatusNameCustomPart() {
4957
return buildStatusNameCustomPart;
5058
}
5159

60+
/**
61+
* Getter method for the build status name overwrite
62+
*
63+
* @return build status name overwrite option
64+
*/
65+
public boolean getBuildStatusNameOverwrite() { return buildStatusNameOverwrite; }
66+
5267
/**
5368
* Our descriptor.
5469
*/

src/main/java/io/jenkins/plugins/gitlabbranchsource/ForkMergeRequestDiscoveryTrait.java

Lines changed: 65 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525
import org.kohsuke.accmod.Restricted;
2626
import org.kohsuke.accmod.restrictions.NoExternalUse;
2727
import org.kohsuke.stapler.DataBoundConstructor;
28+
import org.kohsuke.stapler.DataBoundSetter;
2829

2930
/**
30-
* A {@link Discovery} trait for GitLab that will discover merge requests from forks of the
31+
* A {@link Discovery} trait for GitLab that will discover merge requests from
32+
* forks of the
3133
* project.
3234
*/
3335
public class ForkMergeRequestDiscoveryTrait extends SCMSourceTrait {
@@ -40,35 +42,41 @@ public class ForkMergeRequestDiscoveryTrait extends SCMSourceTrait {
4042
* The authority.
4143
*/
4244
@NonNull
43-
private final SCMHeadAuthority<? super GitLabSCMSourceRequest, ? extends ChangeRequestSCMHead2, ? extends
44-
SCMRevision>
45-
trust;
45+
private final SCMHeadAuthority<? super GitLabSCMSourceRequest, ? extends ChangeRequestSCMHead2, ? extends SCMRevision> trust;
46+
/**
47+
* Build MR for Forks that are not Mirrors
48+
*/
49+
private boolean buildMRForksNotMirror = false;
4650

4751
/**
4852
* Constructor for stapler.
4953
*
50-
* @param strategyId the strategy id.
51-
* @param trust the authority to use.
54+
* @param strategyId the strategy id.
55+
* @param trust the authority to use.
56+
* @param buildMRForksNotMirror the buildMRForksNotMirror flag
5257
*/
5358
@DataBoundConstructor
5459
public ForkMergeRequestDiscoveryTrait(int strategyId,
55-
@NonNull SCMHeadAuthority<? super GitLabSCMSourceRequest, ? extends
56-
ChangeRequestSCMHead2, ? extends SCMRevision> trust) {
60+
@NonNull SCMHeadAuthority<? super GitLabSCMSourceRequest, ? extends ChangeRequestSCMHead2, ? extends SCMRevision> trust,
61+
boolean buildMRForksNotMirror) {
5762
this.strategyId = strategyId;
5863
this.trust = trust;
64+
this.buildMRForksNotMirror = buildMRForksNotMirror;
5965
}
6066

6167
/**
6268
* Constructor for programmatic instantiation.
6369
*
64-
* @param strategies the {@link ChangeRequestCheckoutStrategy} instances.
65-
* @param trust the authority.
70+
* @param strategies the {@link ChangeRequestCheckoutStrategy}
71+
* instances.
72+
* @param trust the authority.
73+
* @param buildMRForksNotMirror the buildMRForksNotMirror flag
6674
*/
6775
public ForkMergeRequestDiscoveryTrait(@NonNull Set<ChangeRequestCheckoutStrategy> strategies,
68-
@NonNull SCMHeadAuthority<? super GitLabSCMSourceRequest, ? extends
69-
ChangeRequestSCMHead2, ? extends SCMRevision> trust) {
76+
@NonNull SCMHeadAuthority<? super GitLabSCMSourceRequest, ? extends ChangeRequestSCMHead2, ? extends SCMRevision> trust,
77+
boolean buildMRForksNotMirror) {
7078
this((strategies.contains(ChangeRequestCheckoutStrategy.MERGE) ? 1 : 0)
71-
+ (strategies.contains(ChangeRequestCheckoutStrategy.HEAD) ? 2 : 0), trust);
79+
+ (strategies.contains(ChangeRequestCheckoutStrategy.HEAD) ? 2 : 0), trust, buildMRForksNotMirror);
7280
}
7381

7482
/**
@@ -94,7 +102,7 @@ public Set<ChangeRequestCheckoutStrategy> getStrategies() {
94102
return EnumSet.of(ChangeRequestCheckoutStrategy.HEAD);
95103
case 3:
96104
return EnumSet
97-
.of(ChangeRequestCheckoutStrategy.HEAD, ChangeRequestCheckoutStrategy.MERGE);
105+
.of(ChangeRequestCheckoutStrategy.HEAD, ChangeRequestCheckoutStrategy.MERGE);
98106
default:
99107
return EnumSet.noneOf(ChangeRequestCheckoutStrategy.class);
100108
}
@@ -106,11 +114,27 @@ public Set<ChangeRequestCheckoutStrategy> getStrategies() {
106114
* @return the authority.
107115
*/
108116
@NonNull
109-
public SCMHeadAuthority<? super GitLabSCMSourceRequest, ? extends ChangeRequestSCMHead2, ? extends SCMRevision>
110-
getTrust() {
117+
public SCMHeadAuthority<? super GitLabSCMSourceRequest, ? extends ChangeRequestSCMHead2, ? extends SCMRevision> getTrust() {
111118
return trust;
112119
}
113120

121+
/**
122+
* Gets the buildMRForksNotMirror
123+
*
124+
* @return true to build MR for Forks that are not Mirror
125+
*/
126+
public boolean getBuildMRForksNotMirror() {
127+
return buildMRForksNotMirror;
128+
}
129+
130+
/**
131+
* Setter for stapler to set the buildMRForksNotMirror
132+
*/
133+
@DataBoundSetter
134+
public void setBuildMRForksNotMirror(boolean buildMRForksNotMirror) {
135+
this.buildMRForksNotMirror = buildMRForksNotMirror;
136+
}
137+
114138
/**
115139
* {@inheritDoc}
116140
*/
@@ -120,6 +144,7 @@ protected void decorateContext(SCMSourceContext<?, ?> context) {
120144
ctx.wantForkMRs(true);
121145
ctx.withAuthority(trust);
122146
ctx.withForkMRStrategies(getStrategies());
147+
ctx.withBuildMRForksNotMirror(getBuildMRForksNotMirror());
123148
}
124149

125150
/**
@@ -188,17 +213,18 @@ public ListBoxModel doFillStrategyIdItems() {
188213
@SuppressWarnings("unused") // stapler
189214
public List<SCMHeadAuthorityDescriptor> getTrustDescriptors() {
190215
return SCMHeadAuthority._for(
191-
GitLabSCMSourceRequest.class,
192-
MergeRequestSCMHead.class,
193-
MergeRequestSCMRevision.class,
194-
SCMHeadOrigin.Fork.class
195-
);
216+
GitLabSCMSourceRequest.class,
217+
MergeRequestSCMHead.class,
218+
MergeRequestSCMRevision.class,
219+
SCMHeadOrigin.Fork.class);
196220
}
197221

198222
/**
199-
* Returns the default trust for new instances of {@link ForkMergeRequestDiscoveryTrait}.
223+
* Returns the default trust for new instances of
224+
* {@link ForkMergeRequestDiscoveryTrait}.
200225
*
201-
* @return the default trust for new instances of {@link ForkMergeRequestDiscoveryTrait}.
226+
* @return the default trust for new instances of
227+
* {@link ForkMergeRequestDiscoveryTrait}.
202228
*/
203229
@NonNull
204230
@SuppressWarnings("unused") // stapler
@@ -207,12 +233,11 @@ public List<SCMHeadAuthorityDescriptor> getTrustDescriptors() {
207233
}
208234
}
209235

210-
211236
/**
212237
* An {@link SCMHeadAuthority} that trusts nothing.
213238
*/
214239
public static class TrustNobody extends
215-
SCMHeadAuthority<SCMSourceRequest, ChangeRequestSCMHead2, SCMRevision> {
240+
SCMHeadAuthority<SCMSourceRequest, ChangeRequestSCMHead2, SCMRevision> {
216241

217242
/**
218243
* Constructor.
@@ -226,7 +251,7 @@ public TrustNobody() {
226251
*/
227252
@Override
228253
public boolean checkTrusted(@NonNull SCMSourceRequest request,
229-
@NonNull ChangeRequestSCMHead2 head) {
254+
@NonNull ChangeRequestSCMHead2 head) {
230255
return false;
231256
}
232257

@@ -242,7 +267,7 @@ public static class DescriptorImpl extends SCMHeadAuthorityDescriptor {
242267
*/
243268
@Override
244269
public boolean isApplicableToOrigin(
245-
@NonNull Class<? extends SCMHeadOrigin> originClass) {
270+
@NonNull Class<? extends SCMHeadOrigin> originClass) {
246271
return SCMHeadOrigin.Fork.class.isAssignableFrom(originClass);
247272
}
248273

@@ -255,16 +280,15 @@ public String getDisplayName() {
255280
return Messages.ForkMergeRequestDiscoveryTrait_nobodyDisplayName();
256281
}
257282

258-
259283
}
260284
}
261285

262286
/**
263287
* An {@link SCMHeadAuthority} that trusts Members to the project.
264288
*/
265289
public static class TrustMembers
266-
extends
267-
SCMHeadAuthority<GitLabSCMSourceRequest, MergeRequestSCMHead, MergeRequestSCMRevision> {
290+
extends
291+
SCMHeadAuthority<GitLabSCMSourceRequest, MergeRequestSCMHead, MergeRequestSCMRevision> {
268292

269293
/**
270294
* Constructor.
@@ -278,7 +302,7 @@ public TrustMembers() {
278302
*/
279303
@Override
280304
protected boolean checkTrusted(@NonNull GitLabSCMSourceRequest request,
281-
@NonNull MergeRequestSCMHead head) {
305+
@NonNull MergeRequestSCMHead head) {
282306
if (head.getOrigin().equals(SCMHeadOrigin.DEFAULT)) {
283307
return false;
284308
}
@@ -307,19 +331,20 @@ public String getDisplayName() {
307331
*/
308332
@Override
309333
public boolean isApplicableToOrigin(
310-
@NonNull Class<? extends SCMHeadOrigin> originClass) {
334+
@NonNull Class<? extends SCMHeadOrigin> originClass) {
311335
return SCMHeadOrigin.Fork.class.isAssignableFrom(originClass);
312336
}
313337

314338
}
315339
}
316340

317341
/**
318-
* An {@link SCMHeadAuthority} that trusts those with required permission to the project.
342+
* An {@link SCMHeadAuthority} that trusts those with required permission to the
343+
* project.
319344
*/
320345
public static class TrustPermission
321-
extends
322-
SCMHeadAuthority<GitLabSCMSourceRequest, MergeRequestSCMHead, MergeRequestSCMRevision> {
346+
extends
347+
SCMHeadAuthority<GitLabSCMSourceRequest, MergeRequestSCMHead, MergeRequestSCMRevision> {
323348

324349
/**
325350
* Constructor.
@@ -333,7 +358,7 @@ public TrustPermission() {
333358
*/
334359
@Override
335360
protected boolean checkTrusted(@NonNull GitLabSCMSourceRequest request,
336-
@NonNull MergeRequestSCMHead head) {
361+
@NonNull MergeRequestSCMHead head) {
337362
if (!head.getOrigin().equals(SCMHeadOrigin.DEFAULT)) {
338363
AccessLevel permission = request.getPermission(head.getOriginOwner());
339364
if (permission != null) {
@@ -371,7 +396,7 @@ public String getDisplayName() {
371396
*/
372397
@Override
373398
public boolean isApplicableToOrigin(
374-
@NonNull Class<? extends SCMHeadOrigin> originClass) {
399+
@NonNull Class<? extends SCMHeadOrigin> originClass) {
375400
return SCMHeadOrigin.Fork.class.isAssignableFrom(originClass);
376401
}
377402
}
@@ -381,7 +406,7 @@ public boolean isApplicableToOrigin(
381406
* An {@link SCMHeadAuthority} that trusts everyone.
382407
*/
383408
public static class TrustEveryone extends
384-
SCMHeadAuthority<SCMSourceRequest, ChangeRequestSCMHead2, SCMRevision> {
409+
SCMHeadAuthority<SCMSourceRequest, ChangeRequestSCMHead2, SCMRevision> {
385410

386411
/**
387412
* Constructor.
@@ -395,7 +420,7 @@ public TrustEveryone() {
395420
*/
396421
@Override
397422
protected boolean checkTrusted(@NonNull SCMSourceRequest request,
398-
@NonNull ChangeRequestSCMHead2 head) {
423+
@NonNull ChangeRequestSCMHead2 head) {
399424
return true;
400425
}
401426

@@ -420,7 +445,7 @@ public String getDisplayName() {
420445
*/
421446
@Override
422447
public boolean isApplicableToOrigin(
423-
@NonNull Class<? extends SCMHeadOrigin> originClass) {
448+
@NonNull Class<? extends SCMHeadOrigin> originClass) {
424449
return SCMHeadOrigin.Fork.class.isAssignableFrom(originClass);
425450
}
426451
}

0 commit comments

Comments
 (0)