Skip to content

Commit 5ece533

Browse files
committed
fixed config lookup
[FIXES JENKINS-40797]
1 parent 1931095 commit 5ece533

File tree

4 files changed

+184
-9
lines changed

4 files changed

+184
-9
lines changed

docs/Home.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ Browse the Jenkins issue tracker to see any [open issues](https://issues.jenkins
2727

2828
## Release Notes
2929
* 1.56 (unreleased)
30+
* Fixed support for
31+
[Config File Provider Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Config+File+Provider+Plugin)
32+
([JENKINS-40797](https://issues.jenkins-ci.org/browse/JENKINS-40797))
3033
* 1.55 (January 03 2016)
3134
* Updated optional
3235
[Config File Provider Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Config+File+Provider+Plugin) dependency to

job-dsl-plugin/src/main/groovy/javaposse/jobdsl/plugin/ConfigFileProviderHelper.groovy

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class ConfigFileProviderHelper {
2828
]
2929

3030
static Config findConfig(ConfigProvider configProvider, String name) {
31-
ConfigFiles.getConfigsInContext(null, configProvider.getClass()).find { it.name == name }
31+
ConfigFiles.getConfigsInContext(Jenkins.instance, configProvider.class).find { it.name == name }
3232
}
3333

3434
static ConfigProvider findConfigProvider(ConfigFileType configFileType) {
@@ -37,13 +37,18 @@ class ConfigFileProviderHelper {
3737
extensionList.empty ? null : extensionList[0]
3838
}
3939

40+
@Deprecated
4041
static Config createNewConfig(Config oldConfig, ConfigFile configFile) {
42+
createNewConfig(oldConfig.id, configFile)
43+
}
44+
45+
static Config createNewConfig(String id, ConfigFile configFile) {
4146
switch (configFile.type) {
4247
case ConfigFileType.Custom:
43-
return new CustomConfig(oldConfig.id, configFile.name, configFile.comment, configFile.content)
48+
return new CustomConfig(id, configFile.name, configFile.comment, configFile.content)
4449
case ConfigFileType.MavenSettings:
4550
return new MavenSettingsConfig(
46-
oldConfig.id,
51+
id,
4752
configFile.name,
4853
configFile.comment,
4954
configFile.content,
@@ -52,7 +57,7 @@ class ConfigFileProviderHelper {
5257
)
5358
case ConfigFileType.GlobalMavenSettings:
5459
return new GlobalMavenSettingsConfig(
55-
oldConfig.id,
60+
id,
5661
configFile.name,
5762
configFile.comment,
5863
configFile.content,
@@ -61,7 +66,7 @@ class ConfigFileProviderHelper {
6166
)
6267
case ConfigFileType.ManagedScript:
6368
return new ScriptConfig(
64-
oldConfig.id,
69+
id,
6570
configFile.name,
6671
configFile.comment,
6772
configFile.content,

job-dsl-plugin/src/main/groovy/javaposse/jobdsl/plugin/JenkinsJobManagement.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import static hudson.model.Result.UNSTABLE;
6767
import static hudson.model.View.createViewFromXML;
6868
import static java.lang.String.format;
69+
import static java.util.UUID.randomUUID;
6970
import static javaposse.jobdsl.plugin.ConfigFileProviderHelper.createNewConfig;
7071
import static javaposse.jobdsl.plugin.ConfigFileProviderHelper.findConfig;
7172
import static javaposse.jobdsl.plugin.ConfigFileProviderHelper.findConfigProvider;
@@ -203,13 +204,11 @@ public String createOrUpdateConfigFile(ConfigFile configFile, boolean ignoreExis
203204
}
204205

205206
Config config = findConfig(configProvider, configFile.getName());
206-
if (config == null) {
207-
config = configProvider.newConfig();
208-
} else if (ignoreExisting) {
207+
if (config != null && ignoreExisting) {
209208
return config.id;
210209
}
211210

212-
config = createNewConfig(config, configFile);
211+
config = createNewConfig(config == null ? randomUUID().toString() : config.id, configFile);
213212
if (config == null) {
214213
throw new DslException(
215214
format(Messages.CreateOrUpdateConfigFile_UnknownConfigFileType(), configFile.getClass())
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
package javaposse.jobdsl.plugin
2+
3+
import javaposse.jobdsl.dsl.ConfigFile
4+
import javaposse.jobdsl.dsl.ConfigFileType
5+
import javaposse.jobdsl.dsl.JobManagement
6+
import javaposse.jobdsl.dsl.MavenSettingsConfigFile
7+
import javaposse.jobdsl.dsl.ParametrizedConfigFile
8+
import org.jenkinsci.lib.configprovider.model.Config
9+
import org.jenkinsci.plugins.configfiles.GlobalConfigFiles
10+
import org.jenkinsci.plugins.configfiles.custom.CustomConfig
11+
import org.jenkinsci.plugins.configfiles.maven.GlobalMavenSettingsConfig
12+
import org.jenkinsci.plugins.configfiles.maven.MavenSettingsConfig
13+
import org.jenkinsci.plugins.managedscripts.ScriptConfig
14+
import org.junit.ClassRule
15+
import org.jvnet.hudson.test.JenkinsRule
16+
import spock.lang.Shared
17+
import spock.lang.Specification
18+
19+
import static java.util.UUID.randomUUID
20+
import static javaposse.jobdsl.plugin.ConfigFileProviderHelper.createNewConfig
21+
import static javaposse.jobdsl.plugin.ConfigFileProviderHelper.findConfig
22+
import static javaposse.jobdsl.plugin.ConfigFileProviderHelper.findConfigProvider
23+
24+
class ConfigFileProviderHelperSpec extends Specification {
25+
@Shared
26+
@ClassRule
27+
JenkinsRule jenkinsRule = new JenkinsRule()
28+
29+
@Shared
30+
Config customConfig
31+
32+
@Shared
33+
Config mavenSettingsConfig
34+
35+
@Shared
36+
Config globalMavenSettingsConfig
37+
38+
@Shared
39+
Config scriptConfig
40+
41+
def setupSpec() {
42+
GlobalConfigFiles globalConfigFiles =
43+
jenkinsRule.instance.getExtensionList(GlobalConfigFiles).get(GlobalConfigFiles)
44+
45+
customConfig =
46+
new CustomConfig(randomUUID().toString(), 'custom', 'foo', 'bar')
47+
globalConfigFiles.save(customConfig)
48+
mavenSettingsConfig =
49+
new MavenSettingsConfig(randomUUID().toString(), 'mavenSettings', 'foo', 'bar', false, [])
50+
globalConfigFiles.save(mavenSettingsConfig)
51+
globalMavenSettingsConfig =
52+
new GlobalMavenSettingsConfig(randomUUID().toString(), 'globalMavenSettings', 'foo', 'bar', false, [])
53+
globalConfigFiles.save(globalMavenSettingsConfig)
54+
scriptConfig =
55+
new ScriptConfig(randomUUID().toString(), 'script', 'foo', 'bar', [])
56+
globalConfigFiles.save(scriptConfig)
57+
}
58+
59+
def 'find config'() {
60+
expect:
61+
findConfig(customConfig.provider, 'custom') == customConfig
62+
findConfig(mavenSettingsConfig.provider, 'mavenSettings') == mavenSettingsConfig
63+
findConfig(globalMavenSettingsConfig.provider, 'globalMavenSettings') == globalMavenSettingsConfig
64+
findConfig(scriptConfig.provider, 'script') == scriptConfig
65+
66+
findConfig(customConfig.provider, 'script') == null
67+
}
68+
69+
def 'find config provider'() {
70+
expect:
71+
findConfigProvider(ConfigFileType.Custom) == customConfig.provider
72+
findConfigProvider(ConfigFileType.MavenSettings) == mavenSettingsConfig.provider
73+
findConfigProvider(ConfigFileType.GlobalMavenSettings) == globalMavenSettingsConfig.provider
74+
findConfigProvider(ConfigFileType.ManagedScript) == scriptConfig.provider
75+
}
76+
77+
def 'create new custom config'() {
78+
setup:
79+
String id = randomUUID()
80+
ConfigFile configFile = new ConfigFile(ConfigFileType.Custom, Mock(JobManagement))
81+
configFile.name = 'newCustom'
82+
configFile.comment = 'bbb'
83+
configFile.content = 'aaa'
84+
85+
when:
86+
Config config = createNewConfig(id, configFile)
87+
88+
then:
89+
config instanceof CustomConfig
90+
config.id == id
91+
config.name == configFile.name
92+
config.comment == configFile.comment
93+
config.content == configFile.content
94+
}
95+
96+
def 'create new Maven settings config'() {
97+
setup:
98+
String id = randomUUID()
99+
ConfigFile configFile = new MavenSettingsConfigFile(ConfigFileType.MavenSettings, Mock(JobManagement))
100+
configFile.name = 'newCustom'
101+
configFile.comment = 'bbb'
102+
configFile.content = 'aaa'
103+
configFile.replaceAll = true
104+
configFile.credentialsMapping['foo'] = 'bar'
105+
106+
when:
107+
Config config = createNewConfig(id, configFile)
108+
109+
then:
110+
config instanceof MavenSettingsConfig
111+
config.id == id
112+
config.name == configFile.name
113+
config.comment == configFile.comment
114+
config.content == configFile.content
115+
((MavenSettingsConfig) config).isReplaceAll
116+
((MavenSettingsConfig) config).serverCredentialMappings.size() == 1
117+
((MavenSettingsConfig) config).serverCredentialMappings[0].serverId == 'foo'
118+
((MavenSettingsConfig) config).serverCredentialMappings[0].credentialsId == 'bar'
119+
}
120+
121+
def 'create new global Maven settings config'() {
122+
setup:
123+
String id = randomUUID()
124+
ConfigFile configFile = new MavenSettingsConfigFile(ConfigFileType.GlobalMavenSettings, Mock(JobManagement))
125+
configFile.name = 'newCustom'
126+
configFile.comment = 'bbb'
127+
configFile.content = 'aaa'
128+
configFile.replaceAll = true
129+
configFile.credentialsMapping['foo'] = 'bar'
130+
131+
when:
132+
Config config = createNewConfig(id, configFile)
133+
134+
then:
135+
config instanceof GlobalMavenSettingsConfig
136+
config.id == id
137+
config.name == configFile.name
138+
config.comment == configFile.comment
139+
config.content == configFile.content
140+
((GlobalMavenSettingsConfig) config).isReplaceAll
141+
((GlobalMavenSettingsConfig) config).serverCredentialMappings.size() == 1
142+
((GlobalMavenSettingsConfig) config).serverCredentialMappings[0].serverId == 'foo'
143+
((GlobalMavenSettingsConfig) config).serverCredentialMappings[0].credentialsId == 'bar'
144+
}
145+
146+
def 'create new script config'() {
147+
setup:
148+
String id = randomUUID()
149+
ConfigFile configFile = new ParametrizedConfigFile(ConfigFileType.ManagedScript, Mock(JobManagement))
150+
configFile.name = 'newCustom'
151+
configFile.comment = 'bbb'
152+
configFile.content = 'aaa'
153+
configFile.arguments = ['one', 'two']
154+
155+
when:
156+
Config config = createNewConfig(id, configFile)
157+
158+
then:
159+
config instanceof ScriptConfig
160+
config.id == id
161+
config.name == configFile.name
162+
config.comment == configFile.comment
163+
config.content == configFile.content
164+
((ScriptConfig) config).args.size() == 2
165+
((ScriptConfig) config).args[0].name == 'one'
166+
((ScriptConfig) config).args[1].name == 'two'
167+
}
168+
}

0 commit comments

Comments
 (0)