11
11
import com .dabsquared .gitlabjenkins .trigger .filter .BranchFilter ;
12
12
import com .dabsquared .gitlabjenkins .trigger .filter .BranchFilterFactory ;
13
13
import com .dabsquared .gitlabjenkins .trigger .filter .BranchFilterType ;
14
- import com .dabsquared .gitlabjenkins .trigger .handler .WebHookTriggerConfig ;
15
14
import com .dabsquared .gitlabjenkins .trigger .handler .merge .MergeRequestHookTriggerHandler ;
16
- import com .dabsquared .gitlabjenkins .trigger .handler .merge .MergeRequestHookTriggerHandlerFactory ;
17
15
import com .dabsquared .gitlabjenkins .trigger .handler .push .PushHookTriggerHandler ;
18
- import com .dabsquared .gitlabjenkins .trigger .handler .push .PushHookTriggerHandlerFactory ;
19
16
import com .dabsquared .gitlabjenkins .webhook .GitLabWebHook ;
20
17
import hudson .Extension ;
21
18
import hudson .Util ;
22
19
import hudson .init .InitMilestone ;
23
20
import hudson .init .Initializer ;
21
+ import hudson .model .AbstractProject ;
24
22
import hudson .model .AutoCompletionCandidates ;
25
23
import hudson .model .Item ;
26
- import hudson .model .AbstractProject ;
27
24
import hudson .model .Job ;
28
25
import hudson .triggers .Trigger ;
29
26
import hudson .triggers .TriggerDescriptor ;
35
32
import jenkins .model .ParameterizedJobMixIn ;
36
33
import jenkins .triggers .SCMTriggerItem .SCMTriggerItems ;
37
34
import net .sf .json .JSONObject ;
38
- import org .apache .commons .lang .StringUtils ;
39
35
import org .kohsuke .stapler .Ancestor ;
40
36
import org .kohsuke .stapler .AncestorInPath ;
41
37
import org .kohsuke .stapler .DataBoundConstructor ;
44
40
import org .kohsuke .stapler .StaplerRequest ;
45
41
46
42
import java .io .IOException ;
43
+ import java .io .ObjectStreamException ;
47
44
48
45
import static com .dabsquared .gitlabjenkins .trigger .filter .BranchFilterConfig .BranchFilterConfigBuilder .branchFilterConfig ;
46
+ import static com .dabsquared .gitlabjenkins .trigger .handler .merge .MergeRequestHookTriggerHandlerFactory .newMergeRequestHookTriggerHandler ;
47
+ import static com .dabsquared .gitlabjenkins .trigger .handler .push .PushHookTriggerHandlerFactory .newPushHookTriggerHandler ;
49
48
50
49
51
50
/**
52
51
* Triggers a build when we receive a GitLab WebHook.
53
52
*
54
53
* @author Daniel Brooks
55
54
*/
56
- public class GitLabPushTrigger extends Trigger <Job <?, ?>> implements WebHookTriggerConfig {
57
- private transient boolean triggerOnPush = true ;
58
- private transient boolean triggerOnMergeRequest = true ;
55
+ public class GitLabPushTrigger extends Trigger <Job <?, ?>> {
56
+ private boolean triggerOnPush = true ;
57
+ private boolean triggerOnMergeRequest = true ;
59
58
private final TriggerOpenMergeRequest triggerOpenMergeRequestOnPush ;
60
59
private boolean ciSkip = true ;
61
60
private boolean setBuildDescription = true ;
62
61
private boolean addNoteOnMergeRequest = true ;
63
62
private boolean addCiMessage = false ;
64
63
private boolean addVoteOnMergeRequest = true ;
65
64
private transient boolean allowAllBranches = false ;
66
- private transient String branchFilterName ;
67
- private transient String includeBranchesSpec ;
68
- private transient String excludeBranchesSpec ;
69
- private transient String targetBranchRegex ;
70
- private BranchFilter branchFilter ;
71
- private PushHookTriggerHandler pushHookTriggerHandler ;
72
- private MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler ;
65
+ private transient BranchFilterType branchFilterName ;
66
+ private BranchFilterType branchFilterType ;
67
+ private String includeBranchesSpec ;
68
+ private String excludeBranchesSpec ;
69
+ private String targetBranchRegex ;
70
+ private transient BranchFilter branchFilter ;
71
+ private transient PushHookTriggerHandler pushHookTriggerHandler ;
72
+ private transient MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler ;
73
73
private boolean acceptMergeRequestOnSuccess = false ;
74
74
75
75
@@ -78,28 +78,30 @@ public GitLabPushTrigger(boolean triggerOnPush, boolean triggerOnMergeRequest, T
78
78
boolean ciSkip , boolean setBuildDescription , boolean addNoteOnMergeRequest , boolean addCiMessage ,
79
79
boolean addVoteOnMergeRequest , boolean acceptMergeRequestOnSuccess , BranchFilterType branchFilterType ,
80
80
String includeBranchesSpec , String excludeBranchesSpec , String targetBranchRegex ) {
81
- mergeRequestHookTriggerHandler = MergeRequestHookTriggerHandlerFactory . newMergeRequestHookTriggerHandler ( triggerOnMergeRequest , triggerOpenMergeRequestOnPush ) ;
82
- pushHookTriggerHandler = PushHookTriggerHandlerFactory . newPushHookTriggerHandler ( triggerOnPush , triggerOpenMergeRequestOnPush ) ;
81
+ this . triggerOnPush = triggerOnPush ;
82
+ this . triggerOnMergeRequest = triggerOnMergeRequest ;
83
83
this .triggerOpenMergeRequestOnPush = triggerOpenMergeRequestOnPush ;
84
84
this .ciSkip = ciSkip ;
85
85
this .setBuildDescription = setBuildDescription ;
86
86
this .addNoteOnMergeRequest = addNoteOnMergeRequest ;
87
87
this .addCiMessage = addCiMessage ;
88
88
this .addVoteOnMergeRequest = addVoteOnMergeRequest ;
89
- this .branchFilter = BranchFilterFactory .newBranchFilter (branchFilterConfig ()
90
- .withIncludeBranchesSpec (includeBranchesSpec )
91
- .withExcludeBranchesSpec (excludeBranchesSpec )
92
- .withTargetBranchRegex (targetBranchRegex )
93
- .build (branchFilterType ));
89
+ this .branchFilterType = branchFilterType ;
90
+ this .includeBranchesSpec = includeBranchesSpec ;
91
+ this .excludeBranchesSpec = excludeBranchesSpec ;
92
+ this .targetBranchRegex = targetBranchRegex ;
94
93
this .acceptMergeRequestOnSuccess = acceptMergeRequestOnSuccess ;
94
+
95
+ initializeTriggerHandler ();
96
+ initializeBranchFilter ();
95
97
}
96
98
97
99
public boolean getTriggerOnPush () {
98
- return pushHookTriggerHandler . isEnabled () ;
100
+ return triggerOnPush ;
99
101
}
100
102
101
103
public boolean getTriggerOnMergeRequest () {
102
- return mergeRequestHookTriggerHandler . isEnabled () ;
104
+ return triggerOnMergeRequest ;
103
105
}
104
106
105
107
public TriggerOpenMergeRequest getTriggerOpenMergeRequestOnPush () {
@@ -122,14 +124,24 @@ public boolean getAcceptMergeRequestOnSuccess() {
122
124
return acceptMergeRequestOnSuccess ;
123
125
}
124
126
125
- @ Override
126
127
public boolean getCiSkip () {
127
128
return ciSkip ;
128
129
}
129
130
130
- @ Override
131
- public BranchFilter getBranchFilter () {
132
- return branchFilter ;
131
+ public BranchFilterType getBranchFilterType () {
132
+ return branchFilterType ;
133
+ }
134
+
135
+ public String getIncludeBranchesSpec () {
136
+ return includeBranchesSpec ;
137
+ }
138
+
139
+ public String getExcludeBranchesSpec () {
140
+ return excludeBranchesSpec ;
141
+ }
142
+
143
+ public String getTargetBranchRegex () {
144
+ return targetBranchRegex ;
133
145
}
134
146
135
147
// executes when the Trigger receives a push request
@@ -142,6 +154,26 @@ public void onPost(final MergeRequestHook hook) {
142
154
mergeRequestHookTriggerHandler .handle (job , hook , ciSkip , branchFilter );
143
155
}
144
156
157
+ private void initializeTriggerHandler () {
158
+ mergeRequestHookTriggerHandler = newMergeRequestHookTriggerHandler (triggerOnMergeRequest , triggerOpenMergeRequestOnPush );
159
+ pushHookTriggerHandler = newPushHookTriggerHandler (triggerOnPush , triggerOpenMergeRequestOnPush );
160
+ }
161
+
162
+ private void initializeBranchFilter () {
163
+ branchFilter = BranchFilterFactory .newBranchFilter (branchFilterConfig ()
164
+ .withIncludeBranchesSpec (includeBranchesSpec )
165
+ .withExcludeBranchesSpec (excludeBranchesSpec )
166
+ .withTargetBranchRegex (targetBranchRegex )
167
+ .build (branchFilterType ));
168
+ }
169
+
170
+ @ Override
171
+ protected Object readResolve () throws ObjectStreamException {
172
+ initializeTriggerHandler ();
173
+ initializeBranchFilter ();
174
+ return super .readResolve ();
175
+ }
176
+
145
177
@ Extension
146
178
public static class DescriptorImpl extends TriggerDescriptor {
147
179
@@ -247,20 +279,8 @@ public static void migrateJobs() throws IOException {
247
279
if (trigger .addCiMessage ) {
248
280
project .getPublishersList ().add (new GitLabCommitStatusPublisher ());
249
281
}
250
- if (trigger .branchFilter == null ) {
251
- String name = StringUtils .isNotEmpty (trigger .branchFilterName ) ? trigger .branchFilterName : "All" ;
252
- trigger .branchFilter = BranchFilterFactory .newBranchFilter (branchFilterConfig ()
253
- .withIncludeBranchesSpec (trigger .includeBranchesSpec )
254
- .withExcludeBranchesSpec (trigger .excludeBranchesSpec )
255
- .withTargetBranchRegex (trigger .targetBranchRegex )
256
- .build (BranchFilterType .valueOf (name )));
257
- }
258
- if (trigger .pushHookTriggerHandler == null ) {
259
- trigger .pushHookTriggerHandler = PushHookTriggerHandlerFactory .newPushHookTriggerHandler (trigger .triggerOnPush , trigger .triggerOpenMergeRequestOnPush );
260
- }
261
- if (trigger .mergeRequestHookTriggerHandler == null ) {
262
- trigger .mergeRequestHookTriggerHandler =
263
- MergeRequestHookTriggerHandlerFactory .newMergeRequestHookTriggerHandler (trigger .triggerOnMergeRequest , trigger .triggerOpenMergeRequestOnPush );
282
+ if (trigger .branchFilterType == null ) {
283
+ trigger .branchFilterType = trigger .branchFilterName ;
264
284
}
265
285
project .addProperty (new GitLabConnectionProperty (defaultConnectionName ));
266
286
project .save ();
0 commit comments