从使用共享库扩展 - 目录结构我创建了一个共享库,其中我有多个 *.groovy 文件在 vars 文件夹中实现全局变量。
我可以将子文件夹添加到 vars 以更好地组织我的文件吗?我试过了,在使用全局变量时没有运气。我需要使用特定语法来引用子文件夹中的文件吗?还是不支持子文件夹?
从使用共享库扩展 - 目录结构我创建了一个共享库,其中我有多个 *.groovy 文件在 vars 文件夹中实现全局变量。
我可以将子文件夹添加到 vars 以更好地组织我的文件吗?我试过了,在使用全局变量时没有运气。我需要使用特定语法来引用子文件夹中的文件吗?还是不支持子文件夹?
不幸的是,不,你不能。Jenkins 的问题跟踪器中有一个被拒绝的改进请求。给定的原因是文件名直接映射到变量名。
Groovy 中的其他典型方法,例如
evaluate(new File("../tools/Tools.groovy"))
不能很好地工作,因为 Jenkins 全局变量文件不是本机 Groovy 代码,而是经过处理的。
但是,您可以使用一些东西来更好地组织那些不是自定义管道步骤的辅助函数。
我有一个includes.groovy
包含不同功能的文件,例如
def doSomething() {
}
def doSomethingElse() {
}
然后我可以在一个customPipelineStep.groovy
文件中访问它们
def call() {
includes.doSomethingElse()
}
所以includes
工作起来有点像命名空间,你可以有多个这样的实用程序文件。它们不是文件夹,但有助于组织东西。
除了在单个文件中定义自定义步骤,您还可以将它们组合在文件中,但是您必须将它们包装在管道中的脚本块中才能访问它们,如文档中所指出的那样。同样,包含函数也在脚本块中公开可用,因此请注意它们不是私有的。