我正在尝试在共享库中为多个项目重用groovy类。为此我创建了一个简单的Image类,它可以通过给定的图像名称、版本等来构建、标记和推送容器图像。
图像对象的示例化工作正常,我可以调用build方法而没有任何问题。但是我想把对象传递到jenkinsfile中的另一个阶段,这会导致下面的错误消息:
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: com.Image.$() is applicable for argument types: (org.jenkinsci.plugins.workflow.cps.CpsClosure2) values:
有什么方法可以传递对象吗?
Jenkinsfile构建阶段:
stage('building base container image with python') {
when {
anyOf { expression {return params.BuildBaseImages} }
}
steps {
script{
base_python = new Image(this, "${params.PYTHON_DOCKER_IMAGE_NAME}","${params.PYTHON_VERSION}", "centos7_baseimage_python/")
base_python.build()
alert.success "${params.PYTHON_DOCKER_IMAGE_NAME} builded"
}
}
post {
failure {
error 'failed'
}
}
}
Jenkinsfile标记阶段:
stage('tag base image') {
when {
anyOf { expression {return params.BuildBaseImages} }
}
steps {
script {
base_python = base_python.tag("${DOCKER_IMAGE_FOLDER}${params.PYTHON_DOCKER_IMAGE_NAME}${params.PYTHON_VERSION}","${DOCKER_REGISTRY}")
}
}
}
1条答案
按热度按时间fafcakar1#
如果你想在不同的阶段使用变量,你需要全局声明它们,例如检查下面的。