【问题标题】: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/buildNumberhttp.../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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-01
          • 2017-01-29
          • 1970-01-01
          • 1970-01-01
          • 2015-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多