从Extending with Shared Libraries - Directory structure我创建了一个共享库,其中有多个* .groovy文件在vars文件夹中实现了全局变量。
我可以在vars中添加子文件夹以更好地组织文件吗?我尝试使用全局变量时没有运气。我需要使用特定的语法来引用子文件夹中的文件吗?或子文件夹不被支持?
答案 0 :(得分:2)
不幸的是,不,你不能。詹金斯(Jenkins)的问题跟踪器中有一个declined improvement request。给出的原因是文件名直接映射到变量名。
Other approaches在Groovy中很典型,例如
evaluate(new File("../tools/Tools.groovy"))
效果不佳,因为Jenkins全局vars文件不是本机Groovy代码,而是经过处理的。
但是,对于不是custom pipeline steps的那些函数,可以使用一些东西来更好地组织助手功能。
我有一个includes.groovy
文件,其中包含类似的功能
def doSomething() {
}
def doSomethingElse() {
}
然后我可以在customPipelineStep.groovy
文件中使用
def call() {
includes.doSomethingElse()
}
因此includes
的工作方式类似于命名空间,并且您可能有多个这样的实用程序文件。它们不是文件夹,但是可以帮助整理内容。
除了在单个文件中定义自定义步骤之外,您还可以将它们分组到文件中,但是必须将它们包装在管道中的脚本块中才能访问它们,如in the documentation所指出。同样,包含功能也可以在脚本块中公开使用,因此请注意它们不是私有的。