Jenkins管道脚本错误:管道结束java.lang.NoSuchMethodError:找不到此类DSL方法'httpRequest'

问题描述

我希望在当前的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/。您可以从那里继续前进。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...