Jenkinsfile не может использовать функцию из динамически загружаемой библиотеки - PullRequest
0 голосов
/ 25 февраля 2019

Я динамически загружаю свою библиотеку в файл Jenkinsfile следующим образом:

library identifier: 'custom-lib', retriever: modernSCM(
    [$class: 'GitSCMSource',
    remote: 'https://github.mygit.io/owner/jenkins-libraries.git',
    credentialsId: 'gitcred'])

Когда я не вызываю метод из библиотеки на следующих этапах, он работает нормально, и я вижу доступные методы воспроизведения.

Как бы то ни было, когда я пытаюсь вызвать метод в блоке шагов следующим образом

 steps{
     run-terraform()
 }

Я получаю ошибку

WorkflowScript: 32: Expected a step @ line 32, column 17.
                   run-terraform()
                   ^

Похоже, что Дженкинсинтерпретируя Jenkinsfile, он сначала не загружает библиотеку и предполагает, что run-terraform() не существует.Тем не менее, когда я динамически загружаю библиотеку и отказываюсь от вызова каких-либо методов, создается впечатление, что Jenkinsfile действителен и работает.

Мне кажется, что я упускаю что-то очевидное, когда дело доходит до загрузки custom-lib.Когда я предварительно определяю библиотеку в Jenkins и вызываю ее с помощью @Library, она прекрасно работает.

Как вызвать метод из динамически загружаемой библиотеки?

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы хотите вызвать метод из общей библиотеки, он должен быть внутри блока scripts.Вы можете изменить свой код соответствующим образом:

steps {
  scripts {
    run-terraform()
  }
}

, и тогда он будет работать у вас просто отлично.

...