在管道 Jenkinsfile 中导入 groovy 类

Zan*_*dar 5 groovy jenkins jenkins-pipeline

我需要能够创建类并在 Jenkins 管道中使用它们。

假设我有一个非常简单的 groovy 类,在 groovy 脚本中声明,如下所示:

class MyClass {

    @Override
    public String toString() {
        return "toto";
    }

}
return MyClass();
Run Code Online (Sandbox Code Playgroud)

这个类位于文件夹中: Project\Buildfiles\Jenkins\com\external

然后在我的 Jenkinsfile 中,我会这样做:

node('mynode') {
   toto = load 'Project\Buildfiles\Jenkins\com\external\MyClass.groovy'
   echo toto.toString()
}
Run Code Online (Sandbox Code Playgroud)

这实际上有效

然而,这确实给我的 IDE 带来了一些问题,它不明白发生了什么。此外,这可以防止我在自定义类中有多个构造函数。

我一直在尝试做的事情,我需要帮助,如下。在名为 的文件中ExternalClasses.groovy

class Toto{

    @Override
    public String toString() {
        return "toto";
    }

}

class Tata{

    @Override
    public String toString() {
        return "tata";
    }

}

return this;
Run Code Online (Sandbox Code Playgroud)

在 JenkinsFile 中:

node('mynode') {
   external= load 'Project\Buildfiles\Jenkins\com\external\ExternalClasses.groovy'
   toto = new Toto();
   tata = new Tata();
}
Run Code Online (Sandbox Code Playgroud)

失败了 我尝试了几种方法,使用了包名,使用了 Toto.new() 语法,但都没有奏效。

有任何想法吗 ?

编辑共享库:

我实际上有一个共享库,它被多个团队使用,并且包含非常具体的数据,这些数据应该归团队所有,而不是归库所有。

我们需要能够把不属于它的东西从图书馆里拿出来。这项工作的目的是减轻上述非通用代码库。

ndu*_*eck 0

您可以使用共享库功能。将脚本上传到 Github/Bitbucket 等 VCS 中,并使用 Jenkins-Jobs 来执行它们。它们适用于所有项目/工作。