问题描述
我希望在当前的Pipeline脚本中获得单独的詹金斯工作said_no
的最新状态。
下面是我的管道脚本。
Backup_Precheck
我在jenkins控制台日志中收到以下错误:
[管道] {(您好)由于之前的失败,跳过了“您好”阶段 [管道]} [管道] //阶段[管道]} [管道] //节点 [管道]管道结束java.lang.NoSuchMethodError:没有此类DSL 在步骤[ansiColor,ansiblePlaybook, ansibleTower,ansibleTowerProjectRevision,ansibleTowerProjectSync, ansibleVault,存档,蝙蝠,构建,catchError,签出,deleteDir, dir,dockerFingerprintFrom,dockerFingerprintRun,dockerNode,echo, emailext,emailextrecipients,envVarsForTool,错误,fileExists, findBuildScans,getContext,git,input,isUnix,junit,库, libraryResource,加载,锁定,邮件,里程碑,节点,并行, powershell,属性,publishHTML,pwd,pwsh,readFile,readTrusted, resolveScm,重试,脚本,sh,睡眠,阶段,隐藏,步骤,svn,任务, 超时,tm,工具,未存档,不稳定,未隐藏, validateDeclarativePipeline,waitUntil,warnError,withContext, withCredentials和DockerConta
我了解我可能需要安装HTTP请求插件才能解决上述问题。
但是,我不必依靠import groovy.json.JsonSlurper
pipeline
{
agent any
stages {
stage('check Job Backup_Precheck status'){
steps {
script{
if(checkStatus() == "RUNNING" ){
timeout(time: 60,unit: 'MINUTES') {
waitUntil {
def status = checkStatus()
return (status == "SUCCESS" || status == "FAILURE" || status == "UNSTABLE" || status == "ABORTED")
}
}
}
if( checkStatus() != "SUCCESS" ){
error('Stopping Job Weekend_Backup becuase job Backup_Precheck is not successful.')
}
else
{
echo 'Triggering ansible backup automation'
}
} // script end
} //steps ends here
} // stage ends here
stage('Hello') {
steps {
echo 'Hello World'
}
}
} //step closes
}
def checkStatus() {
def statusUrl = httpRequest "https://portal.myshop.com:9043/job/Backup_Precheck/lastBuild/api/json"
def statusJson = new JsonSlurper().parseText(statusUrl.getContent())
return statusJson['result']
}
就能获得工作的最新状态吗?如果是这样,请指导我。
解决方法
有一种更简单的方法可以做到这一点。由于Jenkins是用Java实现的,并且管道是在Groovy(同一VM)中运行的,因此您可以从Jenkins代码访问每个类和函数。为了获得当前作业的构建结果,您可以执行以下操作:
def job = jenkins.model.Jenkins.instance.getItemByFullName("<folder>/<job name>")
def result = job.getLastBuild().result
这种方法非常强大,可以在管道运行时对Jenkins进行很多控制。
要了解更多信息,您可以:
- 看看documentation
- 打开脚本控制台,从jenkins.model.Jenkins.instance开始,然后仅[打印所有可用方法] [2]
[2]:https://bateru.com/news/2011/11/code-of-the-day-groovy-print-all-methods-of-an-object/。您可以从那里继续前进。