如何在 Jenkins 管道代码中使用 vSphere Cloud Plugin?

How can I use vSphere Cloud Plugin inside Jenkins pipeline code?

我在工作中有一个设置,在执行特定的 jenkins 作业之前手动重启 vSphere 主机,作为办公室的菜鸟,我通过添加额外的构建步骤来自动化这个过程,以在 https://wiki.jenkins-ci.org/display/JENKINS/vSphere+Cloud+Plugin! (vSphere 云插件)。 我现在想将其集成为管道代码,请指教。 我已经检查过这个插件是 Pipeline 兼容的。

我目前通过远程触发配置有 vSphere 云插件的作业来触发管道中的 vSphere 主机重启。

pipeline {
    agent any
    stages {
        stage('Restarting vSphere') {
            steps {
            script {
                sh "curl -v 'http://someserver.com/job/Vivin/job/executor_configurator/buildWithParameters?Host=build-114&token=bonkers'"                
            }
            }
        }
        stage('Setting Executors') {
            steps {
                script {
                def jenkins = Jenkins.getInstance()
                jenkins.getNodes().each { 
                if (it.displayName == 'brewery-133') {
                echo 'brewery-133'
                it.setNumExecutors(8)
                }                    
                }
                }
            }
        }

    }
}

我想直接在流水线代码中集成vSphere云插件,请帮我集成。

pipeline {
    agent any
    stages {
        stage('Restarting vSphere') {
            steps {

            vSphere cloud plugin code that is requested

            }
            }
        }
        stage('Setting Executors') {
            steps {
                script {
                def jenkins = Jenkins.getInstance()
                jenkins.getNodes().each { 
                if (it.displayName == 'brewery-133') {
                echo 'brewery-133'
                it.setNumExecutors(8)
                }                    
                }
                }
            }
        }

    }
}

好吧,借助 Jenkins 管道作业菜单中的 'pipeline-syntax' 功能,我自己找到了解决方案。

'Pipeline-syntax' 功能页面包含通过 Jenkins 服务器已安装插件的 API 提供的所有可能参数的语法,我们可以使用它根据需要生成或开发语法.

http://<jenkins server url>/job/<pipeline job name>/pipeline-syntax/

我的 Jenkinsfile(管道)现在看起来像这样

pipeline {
    agent any
    stages {
        stage('Restarting vSphere') {
            steps {
                vSphere buildStep: [$class: 'PowerOff', evenIfSuspended: false, ignoreIfNotExists: false, shutdownGracefully: true, vm: 'brewery-133'], serverName: 'vspherecentral'
                vSphere buildStep: [$class: 'PowerOn', timeoutInSeconds: 180, vm: 'brewery-133'], serverName: 'vspherecentral'
            }
        }        
        stage('Setting Executors') {
            steps {
                script {
                    def jenkins = Jenkins.getInstance()
                    jenkins.getNodes().each { 
                        if (it.displayName == 'brewery-133') {
                        echo 'brewery-133'
                        it.setNumExecutors(1)
                        }                    
                    }
                }
            }
        }
    }
}