我希望在我当前的管道脚本中获得单独的Jenkins作业< code>Backup_Precheck的最新状态。
下面是我的管道脚本。
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控制台日志中得到以下错误:
[Pipeline] { (Hello) Stage "Hello "由于先前的失败而被跳过[Pipeline]}[Pipeline]//Stage[Pipeline]}[Pipeline]//node[Pipeline]Pipeline的结尾Java . lang . nosuchmethodreror:在步骤[ansiColor、ansiblePlaybook、ansibleTower、ansibleTowerProjectRevision、ansibleTowerProjectSync、ansibleVault、archive、bat、build、catchError、checkout、deleteDir、Dir、dockerFingerprintFrom、dockerFingerprintFrom
我知道我可能需要我安装HTTP Request Plugin才能解决上述问题。
但是,如果不依赖HTTP Request Plugin
,我就不能获得作业的最新状态吗?如果是这样,请指导我。
有一种更简单的方法可以做到这一点。因为Jenkins是用Java实现的,而管道是在Groovy(同一个VM)中运行的,所以可以从Jenkins代码中访问每个类和函数。为了获得作业的当前构建的构建结果,您可以执行如下操作:
def job = jenkins.model.Jenkins.instance.getItemByFullName("<folder>/<job name>")
def result = job.getLastBuild().result
这种方法非常强大,可以在管道运行时对Jenkins进行大量控制。
要了解更多信息,您可以:
[2]:https://bateru.com/news/2011/11/code-of-the-day-groovy-print-all-methods-of-an-object/.你可以从那里继续前进。
我在Jenkins管道中使用下面的Groovy脚本来调用自由风格的作业,但它最终出现了“没有这样的DSL方法‘构建’”错误。
问题内容: 我在Jenkins管道中使用JSON函数并获取。我正在使用Jenkins 2.85。 任何想法如何解决这个问题? 问题答案: 使用管道实用程序步骤插件可以使用该功能。 没有此插件,您将无法使用此功能。 有关更多信息,请检查:步骤
问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建
我目前正在尝试使用jenkinsfile在jenkins中实现管道,我正在windows机器上执行一个maven项目。我正在jenkins中创建一个管道作业,我已经在我的github存储库中签入了这个文件,当我在jenkins中运行作业时,我收到了以下错误。 我的jenkinsfile: 我得到下面的错误,当我运行它通过詹金斯工作-Jenkins错误: java.lang.NoSuchMethod
问题内容: 我正在尝试在jenkins上实现一个阶段,以在jenkins发生故障时发送电子邮件。我做了一些类似于詹金斯记录的东西: 但是我总是得到这个错误: java.lang.NoSuchMethodError:在步骤[archive,bat,build,catchError,checkout,deleteDir,dir,dockerFingerprintFrom,dockerFingerpri
我正在尝试使用 Jenkinsfile 实现一个新的 Jenkins 管道。 GIT存储库并没有在每个分支上都有一个Jenkinsfile,只是在一个特定的分支下(因为我目前正在为一个遗留存储库构建CI)。 Jenkins管道是使用以下配置创建的: 丢弃旧版本(我不想手动清理) Bitbucket webhook trigger (on push event) 来自 SCM 的管道脚本 Bitbu