Jenkins共享库-从/ vars中的/ src文件夹导入类

我正在尝试为CI流程编写Jenkins共享库。我想引用在\src文件夹中定义的全局函数内的\vars文件夹中的类,因为它可以使我将大多数逻辑放在类中,而不是在全局函数中。我正在遵循Jenkins官方文档中记录的存储库结构:

Jenkins Shared Library结构

这是我所拥有的简化示例:


/src/com/example/SrcClass.groovy

package com.example

class SrcClass {

def aFunction() {

return "Hello from src folder!"

}

}


/vars/classFromVars.groovy

import com.example.SrcClass

def call(args) {

def sc = new SrcClass()

return sc.aFunction()

}


詹金斯档案

@Library('<lib-name>') _

pipeline {

...

post {

always {

classFromVars()

}

}

}

我的目标是使/vars文件夹中的全局类充当一种公共外观,并在我Jenkinsfile的自定义步骤中使用它,而不必在script块中实例化一个类(使其与声明性管道兼容)。这一切对我来说似乎很简单,但是运行classFromVars文件时出现此错误:

<root>\vars\classFromVars.groovy: 1: unable to resolve class com.example.SrcClass

@ line 1, column 1.

import com.example.SrcClass

^

1 error

我尝试classFromVars直接在groovy本地和Jenkins服务器上使用CLI

运行类,在两种环境下我都遇到相同的错误。我还尝试在运行/vars脚本时指定类路径,并使用以下命令得到相同的错误:

<root>>groovy -cp <root>\src\com\example vars\classFromVars.groovy

我正在努力实现的目标有可能吗?还是我应该将所有逻辑简单地放在/vars类中并避免使用/src文件夹?

我在GitHub上发现了几个存储库,这些存储库似乎表明这是可能的,例如,以下一个存储库:https : //github.com/fabric8io/fabric8-pipeline-

library,它使用了/src文件夹中许多类中的类/vars夹。

回答:

正如@Szymon

Stepniak指出的那样,-cp我的groovy命令中的参数不正确。现在,它可以在本地和Jenkins服务器上运行。我还没有解释为什么它不能在Jenkins服务器上运行。

以上是 Jenkins共享库-从/ vars中的/ src文件夹导入类 的全部内容, 来源链接: utcz.com/qa/423673.html

回到顶部