【问题标题】:Jenkins; Execute script on first failure詹金斯;第一次失败时执行脚本
【发布时间】:2018-05-13 14:15:38
【问题描述】:
我希望 Jenkins 在当前构建发生“第一次失败”后执行 Powershell 脚本。
因此,脚本可能不会在下一个后续“失败”构建时触发。
只有再次构建成功后,powershell脚本可能会在之后的第一次失败时再次触发。
我已经在 groovy 脚本中进行了搜索,以确定第一次失败。但也许有人知道一个插件可以选择在“第一次失败”时执行脚本?
任何帮助表示赞赏。
亲切的问候,
彼得
【问题讨论】:
标签:
powershell
jenkins
plugins
groovy
build
【解决方案1】:
currentBuild 对象指向上一个构建。当您当前的构建失败时,您可能可以使用currentBuild.previousBuild.result 检查先前构建的状态。如果它成功,那么您知道这是第一次失败。我实际上并没有尝试过,所以 YMMV。
【解决方案2】:
假设您可以使用 curl(或类似的东西),请尝试获取 http.../jobname/lastSuccessfulBuild/buildNumber 和 http.../jobname/lastFailedBuild/buildNumber 的内容。如果lastSuccessfulBuild 的结果大于lastFailedBuild,则在上次失败之前您已经成功。
【解决方案3】:
我进行了以下设置:
- 我在 Windows 批处理命令 Build 中启动了一个 powershell。带有以下参数
-BuildNr $ENV:BUILD_NUMBER
- 在 powershell 中,我将计算以前的构建 nr(只需 -1 :))
- 使用以前的构建 nr,我从 xml 中得到结果:
从以前的 Jenkins 工作中获取结果
$PreviousUrl = "$($ProjectLink)/$($PreviousBuildNr)/api/xml"
[xml]$PreviousXML = Invoke-WebRequest $PreviousUrl -Method GET -Headers
$headers -UseBasicParsing
$PreviousResult = $PreviousXML.freeStyleBuild.result
从那里开始,我可以在我的 powershell 脚本中进一步使用PreviousResult 和(类似的)currentResult。