如果没有包装在脚本中,Jenkins库步骤将失败

时间:2018-05-17 02:55:14

标签: jenkins jenkins-pipeline jenkins-shared-libraries

我有一个奇怪的问题,我似乎无法理解。我编写了一个自定义step,它接受​​用于更容易克隆github / bitbucket存储库的参数。 step工作正常 - 它会为checkout()branches调用相应的pr,但出于某种原因,只有从{{1}调用它时才有效}。如果你没有用script { gitUtils.cloneRepo(...) }包裹它并带有一个超级奇怪的例外,它就不会在声明性管道中工作:

script { }

为什么会发生这种情况?

WorkflowScript: 25: Expected a symbol @ line 25, column 17.
               gitUtils().getCredentials(repo)
               ^

WorkflowScript: 26: Expected a symbol @ line 26, column 17.
               gitUtils().cloneRepo(url: repo)
               ^

WorkflowScript: 27: Expected a symbol @ line 27, column 17.
               gitUtils().getRevision()
               ^

WorkflowScript: 26: Invalid parameter "url", did you mean "message"? @ line 26, column 38.
               gitUtils().cloneRepo(url: repo)
                                    ^

WorkflowScript: 27: Missing required parameter: "message" @ line 27, column 17.
               gitUtils().getRevision()

1 个答案:

答案 0 :(得分:2)

script{}步骤采用Scripted Pipeline(包含Groovy语言提供的功能)块并在Declarative Pipeline中执行。

由于gitUtils.cloneRepo(...)是脚本化管道块,因此您需要使用script{},以便可以将其嵌入到声明性管道步骤中。