jenkins - 在管道 Jenkinsfile 中导入 groovy 类

标签 jenkins groovy jenkins-pipeline

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

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

class MyClass {

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

}
return MyClass();

此类位于文件夹:Project\Buildfiles\Jenkins\com\external

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

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

这实际上有效

然而,这确实给我的 IDE 带来了一定数量的问题,它不明白发生了什么。另外,这会阻止我在自定义类中使用多个构造函数。

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

class Toto{

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

}

class Tata{

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

}

return this;

在 Jenkins 文件中:

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

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

有什么想法吗?

编辑共享库:

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

我们需要能够将不属于图书馆的东西移出图书馆。这项工作的目的是减轻上述非通用代码库的影响。

最佳答案

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

关于jenkins - 在管道 Jenkinsfile 中导入 groovy 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598393/

相关文章:

continuous-integration - 管道多个 jenkins 作业

continuous-integration - 如何在一个仪表板上整合来自不同位置的多个 Jenkins 实例的构建状态?

jenkins - 通过 SVN 从 Jenkins 更新工作区时出现间歇性 "SVNException: svn: E175002: Connection reset"

jenkins - 如何在管道脚本中使 Jenkins 节点离线

grails - SpringSource Tool Suite中的Grails扩展错误

groovy - Groovy 中的真正组合

jenkins-pipeline - 由 jenkins 管道执行时,sonar-scanner.bat 在 api/settings/values.protobuf 上失败并显示 401

jenkins - 运行我的 jenkinsfile 时找不到这样的字段 : field java. lang.String sinput 错误

Jenkins 编译器警告插件不显示 C 或 C++ 源代码

gradle - Gradle Groovy插件是否支持连续构建?