传递变量beetwen groovy文件


9

我正在通过DSL插件管理Jenkins中的许多工作。该插件使用.groovy定义,因此我认为即使有人不使用Jenkins,但使用groovy可能也可以提供帮助。

通常,我想创建一个其他文件,该文件可以是groovy文件,JSON或YAML等。重要的是可以将该文件与我的.groovy文件连接。

在该文件中,我正在定义变量(而不是字符串),例如地址IP或其他内容。

ip_gitlab: 1.2.3.4
default_user: admin

在我的常规文件中,我希望能够使用这些变量。

这种方法在常规中可行吗?


当然可以。例如,有groovy-lang.org/json.html
嗅到

如果可以在DSL插件中定义其他类路径。然后放入您将添加到classpath groovy文件的文件夹中,例如class GLOBAL{ def a=111; def b=222; }。那么在代码中您应该可以访问它GLOBAL.a
daggett

@daggett我在尝试编写时一直在尝试,并且总是出现错误:org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'org.codehaus.groovy.runtime.InvokerHelper$1@641eff69' with class 'org.codehaus.groovy.runtime.InvokerHelper$1' to class 'javaposse.jobdsl.dsl.JobParent' 在处理您的GLOBAL类时会发生此错误
rafal1337 '19

我忘了 。对于每个定义的变量,应有static前缀。class GLOBAL{ static def a=111; static def b=222; }。但是你的错误很奇怪。您能否显示您已声明的变量以及如何在dsl中使用它。
daggett

Answers:


3

我建议使用@JBaruch编写的属性文件

ip_gitlab=1.2.3.4
default_user=admin

并加载它

Properties properties = new Properties()
File propertiesFile = new File('test.properties')
propertiesFile.withInputStream {
    properties.load(it)
}

然后您可以使用它,例如获取ip:

def ipPropertyName= 'ip_gitlab'
properties."$ipPropertyName"

2
这是另一则帖子的最低限度属性副本;您至少要遵循参考指南并命名作者。
马丁·彼得斯

不幸的是,在Jenkins DSL中不起作用,找不到具有属性的文件,但是该文件是同一文件夹...FATAL: test.properties (No such file or directory) java.io.FileNotFoundException: test.properties (No such file or directory)
rafal1337 '19

@ rafal1337您是否尝试使用文件的部分/完整路径?
user7294900 '19

@ user7294900是的,我正在尝试多路径,但没有积极效果。
rafal1337


2

制作groovy文件并定义一些一般信息并使用load

例如,hello.conf(由groovy编写)

build_name = 'hello'

build_config = [
    'git': 'your git repository',
    'build_job': ['bulid_a', 'build_b']
]

并使用它 load

load 'hello.conf'

println(build_name)
for (job in build_config['build_job']) {
    build job: job
}

看起来不错,但在Jenkins的DSL插件中不起作用:ERROR: (pipeline.groovy, line 1) No signature of method: pipeline.load() is applicable for argument types: (java.lang.String) values: [a_test.groovy]Possible solutions: job(java.lang.String), find(), folder(java.lang.String), job(java.lang.String, groovy.lang.Closure), find(groovy.lang.Closure), wait()
rafal1337 '19

2

如果您想要特定于Jenkins的答案:jenkins 有一个配置文件提供程序插件

您可以通过托管文件存储配置/属性文件。转到管理Jenkins>托管文件,然后创建一个新文件。它支持.groovy,.json,.xml等。

完成后,可以使用“提供配置文件”复选框将所述文件加载到作业中,该复选框将自动将文件加载到env变量中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.