Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Jenkins共享库中使用多方法全局变量_Jenkins_Jenkins Shared Libraries - Fatal编程技术网

在Jenkins共享库中使用多方法全局变量

在Jenkins共享库中使用多方法全局变量,jenkins,jenkins-shared-libraries,Jenkins,Jenkins Shared Libraries,考虑一下在一个repo中加载为Jenkins中的共享库的groovy文件: / vars | --- Utility.groovy // Utility.groovy def funcA() { ... } def funcB() { ... } 在Jenkins文件中: // Jenkinsfile @Library('LibName') _ pipeline { ... steps { script { def util = new Utility()

考虑一下在一个repo中加载为Jenkins中的共享库的groovy文件:

/ vars
|
--- Utility.groovy

// Utility.groovy

def funcA() { ... }

def funcB() { ... }
在Jenkins文件中:

// Jenkinsfile

@Library('LibName') _

pipeline {
...
steps {
   script {
      def util = new Utility()
      util.funcA()
   }
 }
}

这个很好用。但如果我尝试动态加载库:

// Jenkinsfile

pipeline {
   ...
   steps {
       script {
          library 'LibName'
          def util = new Utility()
       }

    }


}

那不行

有人能解释一下文档中的这句话吗

Jenkins的共享库文档说明:

在内部,vars目录中的脚本按需实例化为单例。为了方便起见,这允许在单个.groovy文件中定义多个方法


动态加载Jenkins共享库有一些限制和挑战,因为:

使用src/目录中的类也是可能的,但更复杂。尽管@Library注释在编译之前准备脚本的“类路径”,但在遇到库步骤时,脚本已经编译完毕。因此,您不能从库中导入或“静态”引用类型。这是可以解释的

这个问题似乎有点类似