Jenkins 文件。我想使用对象。如何从对象的方法运行shell脚本?

问题描述 投票:0回答:1

在“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( )
                }
            }
        }

    }
}
jenkins-pipeline sh
1个回答
0
投票

你必须传递这个全局对象。通常,他们在插件中将其称为

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")
                }
            }
        }

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.