This repository has been archived by the owner on Sep 25, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 102
/
BuildParameterFactory.groovy
121 lines (114 loc) · 4.54 KB
/
BuildParameterFactory.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*-
* #%L
* wcm.io
* %%
* Copyright (C) 2017 - 2019 wcm.io DevOps
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package io.wcm.devops.jenkins.pipeline.job
import com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition
/**
* This eases the use of some parameter plugins like the Extended Choice Parameter plugin
* In order to use this factory you have to approve the script signature in the Jenkins script approval
*/
class BuildParameterFactory {
public static final String PARAMETER_TYPE_MULTI_SELECT = "PT_MULTI_SELECT"
public static final String PARAMETER_TYPE_CHECK_BOX = "PT_CHECKBOX"
public static final String SELECTOR_DELIMITER = ","
public static final Integer DEFAULT_VISIBLE_ITEM_COUNT = 5
/**
* Reference to the CpsScript/WorkflowScript
*/
Script script
/**
*
* @param script Reference to the CpsScript/Workflow dcript
*/
BuildParameterFactory(Script script) {
this.script = script
}
/**
* Creates a multi select parameter
*
* @param name The name of the parameter
* @param description The description of the parameter
* @param options The available options
* @param defaultValues The default selected values
* @param visibleItemCount Maximum visible items
* @return The created ExtendedChoiceParameterDefinition
*/
ExtendedChoiceParameterDefinition createMultiSelectParameter(String name, String description, List<String> options, List<String> defaultValues = [], Integer visibleItemCount = BuildParameterFactory.DEFAULT_VISIBLE_ITEM_COUNT) {
return createParameter(PARAMETER_TYPE_MULTI_SELECT, name, description, options, defaultValues, visibleItemCount)
}
/**
* Creates a multi checkbox parameter
*
* @param name The name of the parameter
* @param description The description of the parameter
* @param options The available options
* @param defaultValues The default selected values
* @param visibleItemCount Maximum visible items
* @return The created ExtendedChoiceParameterDefinition
*/
ExtendedChoiceParameterDefinition createMultiCheckboxParameter(String name, String description, List<String> options, List<String> defaultValues = [], Integer visibleItemCount = BuildParameterFactory.DEFAULT_VISIBLE_ITEM_COUNT) {
return createParameter(PARAMETER_TYPE_CHECK_BOX, name, description, options, defaultValues, visibleItemCount)
}
/**
* Creates a ExtendedChoiceParameterDefinition with the given type
*
* @param type The type of the ExtendedChoiceParameterDefinition to create
* @param name The name of the parameter
* @param description The description of the parameter
* @param options The available options
* @param defaultValues The default selected values
* @param visibleItemCount Maximum visible items
*
* @return The created ExtendedChoiceParameterDefinition
*/
private ExtendedChoiceParameterDefinition createParameter(String type, String name, String description, List<String> options, List<String> defaultValues, Integer visibleItemCount) {
return new ExtendedChoiceParameterDefinition(
name,
type,
options.join(SELECTOR_DELIMITER),
null, // project name
null, // propertyFile
null, // groovyScript
null, // groovyScriptFile
null, // bindings
null, // groovyClassPath
null, // propertykey
defaultValues.join(SELECTOR_DELIMITER), //default property value
null, //defaultPropertyFile
null, //defaultGroovyScript
null, //defaultGroovyScriptFile
null, //default bindings
null, //defaultGroovyClasspath
null, //defaultPropertyKey
null, //descriptionPropertyValue
null, //descriptionPropertyFile
null, //descriptionGroovyScript
null, //descriptionGroovyScriptFile
null, //descriptionBindings
null, //descriptionGroovyClasspath
null, //descriptionPropertyKey
null,// javascript file
null, // javascript
false, // save json param to file
false, // quote
visibleItemCount, // visible item count
description,
SELECTOR_DELIMITER)
}
}