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

时间:2019-09-12 13:01:16

标签: jenkins-pipeline vsphere

我有一个工作设置,在执行特定的jenkins作业之前手动重新启动vSphere主机,作为办公室里的菜鸟,我通过添加一个额外的构建步骤来自动完成此过程,借助{{3 }}! (vSphere云插件)。 我现在想将此集成为管道代码,请告知。 我已经检查过此插件与管道兼容。

我目前通过使其远程触发使用vSphere Cloud插件配置的作业来触发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)
                }                    
                }
                }
            }
        }

    }
}

1 个答案:

答案 0 :(得分:1)

我自己借助Jenkins管道作业菜单中的“管道语法”功能自己找到了解决方案。

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

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

enter image description here

我的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)
                        }                    
                    }
                }
            }
        }
    }
}