在Jenkins共享库中使用src文件夹中定义的类于vars文件夹

38次阅读
没有评论

问题描述

在Jenkins共享库中遇到了问题。他在共享库的文件夹结构中有两个文件夹,一个是src,另一个是vars。他在src文件夹中定义了一个类,然后在vars文件夹中尝试使用这个类,但是当运行Jenkins任务时,出现了类找不到的错误。他想知道问题出在哪里,因为他对Groovy语言和共享库的使用都比较新,这是他第一次尝试在src文件夹中创建一个类。他希望能够得到帮助来解决这个问题。

解决方案

问题分析

从您的描述和问答数据中,我们可以看出您的问题出在类的命名和路径上。在Groovy中,类的文件名和类名需要一致,而且需要放在符合Java标识符规范的文件夹中。以下是您可以尝试的解决方案。

方案1:调整类的命名和路径

您在src文件夹中定义了一个名为common.groovy的类,但根据Jenkins文档中的规定,类的文件名应该与类名一致,并且应该符合Java标识符的规范。因此,您需要将类文件重命名为CommonFuncs.groovy,并将其放置在src/org/common/文件夹中。这样,类的路径和命名就会与Groovy的约定一致。

步骤

  1. common.groovy重命名为CommonFuncs.groovy
  2. 将重命名后的文件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的约定一致,以及在流水线脚本中正确引用了类。

正文完