我像这样动态地将库加载到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
对其进行调用时,它可以正常工作。
如何从动态加载的库中调用方法?
答案 0 :(得分:2)
如果要从共享库中调用方法,则该方法必须位于scripts
块中。您可以相应地调整代码:
steps {
scripts {
run-terraform()
}
}
然后它应该对您有用。