共享库“vars”文件夹结构 - 我可以添加子文件夹吗?

qaz*_*cde 12 jenkins-pipeline jenkins-shared-libraries

使用共享库扩展 - 目录结构我创建了一个共享库,其中有多个 *.groovy 文件在 vars 文件夹中实现了全局变量。

我可以将子文件夹添加到 vars 以更好地组织我的文件吗?我试过了,在使用全局变量时没有运气。我需要使用特定的语法来引用子文件夹中的文件吗?或只是不支持子文件夹?

Ric*_*fer 14

不幸的是,不,你不能。有一个下降的改进要求在詹金斯的问题跟踪器。给定的原因是文件名直接映射到变量名。

Groovy 中的其他典型方法,例如

evaluate(new File("../tools/Tools.groovy"))
Run Code Online (Sandbox Code Playgroud)

效果不佳,因为 Jenkins 全局变量文件不是本机 Groovy 代码而是经过处理的。

但是,您可以使用一些东西来更好地组织非自定义管道步骤的辅助函数。

我有一个includes.groovy包含不同功能的文件,例如

def doSomething() {
}

def doSomethingElse() {
}
Run Code Online (Sandbox Code Playgroud)

在一个customPipelineStep.groovy文件中,我可以访问它们

def call() {
  includes.doSomethingElse()
}
Run Code Online (Sandbox Code Playgroud)

Soincludes以某种方式像命名空间一样工作,并且您可以拥有多个这样的实用程序文件。它们不是文件夹,而是帮助组织东西。

您也可以将它们组合在文件中,而不是在单个文件中定义自定义步骤,但是您必须将它们包装在管道中的脚本块中才能访问它们,如文档中所述。同样,包含函数在脚本块中也是公开可用的,因此请注意它们不是私有的。