Jenkins 共享库 - 从 /vars 中的 /src 文件夹导入类
问题:Jenkins 共享库 - 从 /vars 中的 /src 文件夹导入类 我正在尝试为我的 CI 流程编写一个 Jenkins 共享库。我想在\vars文件夹中定义的全局函数内引用\src文件夹中的一个类,因为它允许我将大部分逻辑放在类中而不是全局函数中。我正在关注 Jenkins 官方文档中记录的存储库结构:Jenkins Shared Library structure 这是我所拥有的简
问题:Jenkins 共享库 - 从 /vars 中的 /src 文件夹导入类
我正在尝试为我的 CI 流程编写一个 Jenkins 共享库。我想在\vars
文件夹中定义的全局函数内引用\src
文件夹中的一个类,因为它允许我将大部分逻辑放在类中而不是全局函数中。我正在关注 Jenkins 官方文档中记录的存储库结构:Jenkins Shared Library structure
这是我所拥有的简化示例:
/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
我尝试在本地和 Jenkins 服务器上直接使用groovy
CLI 运行classFromVars
类,并且在两种环境中都有相同的错误。我还尝试在运行/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
命令中的-cp
参数不正确。它现在可以在本地和 Jenkins 服务器上运行。我还没有解释为什么它不能在 Jenkins 服务器上运行。
更多推荐
所有评论(0)