-
Notifications
You must be signed in to change notification settings - Fork 45
/
loadCustomResource.groovy
56 lines (49 loc) · 1.76 KB
/
loadCustomResource.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
/*
Copyright 2014-2024 Sam Gleske - https://github.com/samrocketman/jervis
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.
*/
/**
This pipeline var will attempt to load resources from other pipeline
libraries and the global config files plugin first. If all else fails then
it will attempt to load resources from this library as a last resort.
*/
import jenkins.model.Jenkins
import org.jenkinsci.plugins.configfiles.GlobalConfigFiles
/**
Gets a library resource. A resource can be loaded from an external library
provided by an admin, a config file defined in global settings, or return
null if we couldn't find a custom resource.
*/
@NonCPS
String loadConfigFileResource(String resource) {
def config_files = Jenkins.instance.getExtensionList(GlobalConfigFiles)[0]
if(config_files.getById(resource)) {
config_files.getById(resource).content
}
else {
""
}
}
@NonCPS
String call(String resource, Boolean skipAdmin = false) {
if(!skipAdmin && hasGlobalVar('adminLibraryResource')) {
adminLibraryResource(resource)
}
else if(loadConfigFileResource(resource)) {
loadConfigFileResource(resource)
}
else if(hasGlobalResource(resource)) {
libraryResource(resource)
}
else {
null
}
}