问题描述
在Jenkins共享库中遇到了问题。他在共享库的文件夹结构中有两个文件夹,一个是src
,另一个是vars
。他在src
文件夹中定义了一个类,然后在vars
文件夹中尝试使用这个类,但是当运行Jenkins任务时,出现了类找不到的错误。他想知道问题出在哪里,因为他对Groovy语言和共享库的使用都比较新,这是他第一次尝试在src
文件夹中创建一个类。他希望能够得到帮助来解决这个问题。
解决方案
问题分析
从您的描述和问答数据中,我们可以看出您的问题出在类的命名和路径上。在Groovy中,类的文件名和类名需要一致,而且需要放在符合Java标识符规范的文件夹中。以下是您可以尝试的解决方案。
方案1:调整类的命名和路径
您在src
文件夹中定义了一个名为common.groovy
的类,但根据Jenkins文档中的规定,类的文件名应该与类名一致,并且应该符合Java标识符的规范。因此,您需要将类文件重命名为CommonFuncs.groovy
,并将其放置在src/org/common/
文件夹中。这样,类的路径和命名就会与Groovy的约定一致。
步骤
- 将
common.groovy
重命名为CommonFuncs.groovy
。 - 将重命名后的文件
CommonFuncs.groovy
移动到src/org/common/
文件夹中。
示例:
# 调整前的文件路径
src
├── org
│ └── common.groovy
# 调整后的文件路径
src
└── org
└── common
└── CommonFuncs.groovy
方案2:更新Jenkins流水线脚本
在您的Jenkins流水线脚本中,您使用了一个叫做testSrc()
的步骤,这是一个您自定义的步骤。确保您在该步骤中正确引用了CommonFuncs
类,而不是之前的org.common.CommonFuncs
。正确的引用方式应该是new common.CommonFuncs()
。
步骤
在您的Jenkins流水线脚本中,更新调用CommonFuncs
类的代码。
示例:
@Library('jenkins-library') _
pipeline {
agent { label 'my_servers' }
stages {
stage('test') {
steps {
common.CommonFuncs funcs = new common.CommonFuncs()
funcs.sayHi()
}
}
}
}
通过上述步骤,您应该能够解决在Jenkins共享库中使用src
文件夹中定义的类于vars
文件夹的问题。如果问题仍然存在,请确保您的类文件命名和路径与Groovy的约定一致,以及在流水线脚本中正确引用了类。