У меня есть файл, который динамически загружает библиотеку, как это
def lib=library(identifier: 'pipeline-core@master', retriever: modernSCM(
[$class: 'GitSCMSource',
remote: 'https://scm.intra/scm/jenins/pipeline-core.git',
credentialsId: 'bitbucket.service.user'
])).ch.swisscard.pipeline.util.Utils
defaultCdPipeline {}
, тогда как defaultCdPipeline
- это определение конвейера jenkins, которое использует класс Utils
, такой как
import ch.mycompany.jenkins.pipeline.util.*
...
Utils.isRunning()
...
.Структура файла такова:
+- src
| +- mycompany
| +- jenkins
| +- pipeline
| +- util
| +- Utils.groovy
| +- Commons.groovy
+- vars
+- defaultCdPipeline.groovy
Это работает до сих пор.Когда я смотрю на динамический импорт моего понимания, я бы использовал lib
, поэтому lib.isRunning()
, а не Utils.isRunning()
, но это приводит к следующей ошибке
No such property: lib for class: groovy.lang.Binding
Почему?В дальнейшем я хотел бы использовать как Utils.groovy
, так и Commons.groovy
.Это я бы "предварительно выбрал пакет", как это показано в примере , таким образом, используя только .ch.swisscard.pipeline.util
def lib=library(identifier: 'pipeline-core@master', retriever: modernSCM(
[$class: 'GitSCMSource',
remote: 'https://scm.intra/scm/jenins/pipeline-core.git',
credentialsId: 'bitbucket.service.user'
])).ch.swisscard.pipeline.util
defaultCdPipeline {}
Это, однако, также не работает как вызов lib.Uils.isRunning()
...
stages {
stage('Deployment') {
steps {
script {
lib.Uils.isRunning()`
...
выдает то же исключение, как упомянуто выше
No such property: lib for class: groovy.lang.Binding
Содержимое, если Utils
package ch.mycompany.jenkins.pipeline.util
class Utils implements Serializable {
@NonCPS
def static String isRunning() {
return "isRunning()"
}
}
Может кто-нибудь пролить свет на этовыпуск и скажите мне, как я могу правильно загрузить пакет / несколько классов?