我正在尝试 Jenkins 模板引擎,我的治理层有以下
Jenkinsfile
node("Build-Node") {
def artifactVersion
checkout()
build()
sourceArtifact = docker_build()
push(sourceArtifact)
}
我的共享库具有以下结构
shared-library
|
|--docker
| |--steps
| |--docker_build.groovy
| |--push.groovy
|--maven
| |--steps
| |--build.groovy
|--npm
| |--steps
| |--build.groovy
在我的客户端,pipeline_config.groovy 有以下内容 -
libraries {
docker {
url = "REGISTRY_URL"
credentials = "REGISTRY_CREDENTIALS"
@override sourceArtifact= "" //this has to be overriden in Jenkinsfile and new value fetched should be passed to the push() method.
//more docker configuration
}
}
我的
docker.build()
方法看起来像这样-
def call() {
//do docker build
return sourceArtefact
}
我收到一个错误,说在push.groovy 中找不到调用方法。 如何在 JTE 共享库中的两个不同方法之间正确传递值?
提前非常感谢您。
我不建议在模板的步骤之间创建紧密耦合。
您希望您的步骤尽可能独立,以确保您可以在实现之间自由切换。
如果您创建一个接受输入变量的步骤,那么您正在创建一个“契约”,模板中可能使用的该步骤的每个实现都将具有相同的方法签名。
如果您始终知道要在构建后推送容器映像,则应该在构建步骤中执行此操作。
话虽这么说-您的问题与您所说的收到的错误无关。听起来您的推送方法不接受源工件的输入参数 - 因此管道失败,因为它找不到输入参数为零的调用方法。