我有一个奇怪的问题,我似乎无法理解。我编写了一个自定义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()
答案 0 :(得分:2)
script{}
步骤采用Scripted Pipeline(包含Groovy语言提供的功能)块并在Declarative Pipeline中执行。
由于gitUtils.cloneRepo(...)
是脚本化管道块,因此您需要使用script{}
,以便可以将其嵌入到声明性管道步骤中。