我有一个工作设置,在执行特定的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)
}
}
}
}
}
}
}
答案 0 :(得分:1)
我自己借助Jenkins管道作业菜单中的“管道语法”功能自己找到了解决方案。
“ Pipeline语法”功能页面包含通过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)
}
}
}
}
}
}
}