Jenkinsfile无法使用动态加载的库中的函数

时间:2019-02-25 17:07:20

标签: jenkins groovy jenkins-pipeline

我像这样动态地将库加载到Jenkins文件中

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()
                   ^

在Jenkins解释Jenkins文件时,它似乎没有首先加载库,并假定run-terraform()不存在。但是,当我动态加载该库并放弃调用任何方法时,它看起来像Jenkinsfile是有效的并且可以运行。

在加载custom-lib时,我感觉好像缺少了一些明显的东西。当我预先在Jenkins中预定义库并使用@Library对其进行调用时,它可以正常工作。

如何从动态加载的库中调用方法?

1 个答案:

答案 0 :(得分:2)

如果要从共享库中调用方法,则该方法必须位于scripts块中。您可以相应地调整代码:

steps {
  scripts {
    run-terraform()
  }
}

然后它应该对您有用。