在“commons”管道中,我们可以使用 sh(script...),但我想使用对象来映射容器。 但在对象的方法内部,不可能使用 sh(script...) - Jenkins 抛出 groovy.lang.MissingMethodException。 我尝试了很多技巧,但都完成了相同的...
这是示例性 Jenkinsfile 的一部分。在 Container.run() 方法中,我需要运行脚本。
class Container {
def run( containerName ) {
//sh(script: "docker start ${containerName}")
}
}
pipeline {
agent any
environment {
HUB_CONTAINER_NAME = 'hub'
}
stages {
stage('Running container') {
steps {
script {
def container = new Container( HUB_CONTAINER_NAME )
hubContainer.run( )
}
}
}
}
}
你必须传递这个全局对象。通常,他们在插件中将其称为
script
。说实话我不太明白。
class Container {
def run(script, containerName) {
script.sh("docker start ${containerName}")
}
}
pipeline {
stages {
stage('Running container') {
steps {
script {
def container = new Container()
hubContainer.run(this, "thename")
}
}
}
}
}