我正在尝试将 Jenkins 管道定义为(共享)对象,如此处所述。但我想添加在 docker 容器中运行构建操作的功能。
我的Jenkinsfile
作品是这样的:
@Library('ci-scons-jenkins') _
def image = docker.image("praqma/native-scons")
org.ipiq.buildci.scons.SConsPipeline.builder(this, steps, image).buildDefaultPipeline().execute()
可以看到, docker实例是在Jenkinsfile中创建的,并传递给builder对象来创建builder。到目前为止,它有效。阶段inside
在容器中执行。
现在我想将 Docker 实例的创建转移到 Pipeline 类SconsPipeline.groovy
。我试图这样做:
// I hoped it would import `Docker`
import org.jenkinsci.plugins.docker.workflow.*
class SConsPipeline implements Serializable {
def script
def stages
def image
DSL steps
static builder(script, DSL steps) {
// create the image to use in this build instead of using a parameter
def docker = Docker(script)
image = docker.image("praqma/native-scons")
return new Builder(script, steps, image)
}
但是 Jenkins 没有找到正确的对象:
groovy.lang.MissingMethodException: No signature of method: java.lang.Class.Docker() is applicable for argument types: (WorkflowScript) values:
所以我的问题是如何在共享库的目标代码中使用docker-workflow 。