首页 > 解决方案 > 使用 Jenkins 共享库作为类

问题描述

我有一个 Jenkins 文件,我正在尝试从我的共享库中实例化一个 groovy 类。我得到“无法解决类测试”

我在共享库中有一个 src/com/org/foo.groovy 文件:

package com.org

class Test implements Serializable{
  String val
  Test(val) {
    this.val = val
  }
}

我正在尝试在我的 jenkinsfile 中实例化它

@Library('Shared-Library@master') 
import com.org //also tried to use with .foo with no success

def t = new Test("a") //doesnt work
def t = new foo.Test("a")//doesnt work
def t = new com.org.foo.Test("a")//doesnt work

如果我将文件称为一个类(我无权访问它的构造函数),那么有效的是什么。那是:

@Library('Shared-Library@master')
def t = new foo.com.org.foo()

这很好,让我使用 foo 函数。但是,我失去了给类常量和用参数构造它的能力。

知道如何定义和使用共享库中的类吗?谢谢

标签: classjenkinsgroovyshared-librariesjenkins-pipeline

解决方案


  1. 您的课程范围是默认范围。您可以将范围更改为公共
  2. 它引发错误,因为您在脚本块之外创建了一个类的对象。试试下面的代码,它应该可以工作。试试下面的代码
@Library('Shared-Library@master') 
import com.org.*;

stages{
   stage('Demo') {  
      steps{
         script{
            def t = new Test("a") //this should work
         }
      }
   }
}  

推荐阅读