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

时间:2019-05-10 13:20:53

标签: jenkins-pipeline jenkins-shared-libraries

Extending with Shared Libraries - Directory structure我创建了一个共享库,其中有多个* .groovy文件在vars文件夹中实现了全局变量。

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

1 个答案:

答案 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所指出。同样,包含功能也可以在脚本块中公开使用,因此请注意它们不是私有的。