Mod*_*oob 6 groovy jenkins jenkins-shared-libraries
我正在尝试为我的 CI 流程编写一个 Jenkins 共享库。我想引用\src文件夹中定义的全局函数内的文件夹中的类\vars,因为它允许我将大部分逻辑放在类中而不是全局函数中。我遵循 Jenkins 官方文档中记录的存储库结构:
Jenkins 共享库结构
这是我所拥有的一个简化示例:
/src/com/example/SrcClass.groovy
package com.example
class SrcClass {
def aFunction() {
return "Hello from src folder!"
}
}
Run Code Online (Sandbox Code Playgroud)
/vars/classFromVars.groovy
import com.example.SrcClass
def call(args) {
def sc = new SrcClass()
return sc.aFunction()
}
Run Code Online (Sandbox Code Playgroud)
詹金斯文件
@Library('<lib-name>') _
pipeline {
...
post {
always {
classFromVars()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是让文件夹中的全局类/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
Run Code Online (Sandbox Code Playgroud)
我尝试classFromVars直接使用groovyCLI 在本地和 Jenkins 服务器上运行该类,但在这两个环境中都出现了相同的错误。我还尝试在运行脚本时指定类路径/vars,使用以下命令得到相同的错误:
<root>>groovy -cp <root>\src\com\example vars\classFromVars.groovy
Run Code Online (Sandbox Code Playgroud)
我想要实现的目标可能吗?或者我应该简单地将所有逻辑放在类中/vars并避免使用该/src文件夹?
我在 GitHub 上发现了几个存储库,似乎表明这是可能的,例如这个: https: //github.com/fabric8io/fabric8-pipeline-library,它使用/src文件夹中的许多类中的类/vars文件夹。
正如@Szymon Stepniak 指出的,-cp我的命令中的参数groovy不正确。现在它可以在本地和 Jenkins 服务器上运行。我还没有解释为什么它不能在 Jenkins 服务器上运行。
| 归档时间: |
|
| 查看次数: |
5253 次 |
| 最近记录: |