【问题标题】:Jenkins publishers postBuildScripts doesn't workJenkins 发布者 postBuildScripts 不起作用
【发布时间】:2021-07-27 21:12:11
【问题描述】:

我有一个 groovy 脚本可以在 Jenkins 中设置计划作业。
我想在构建失败时执行一些 shell 脚本。
如果在通过 groovy 脚本更新作业后,我在作业创建后手动拥有脚本,它们就会运行。
但是 groovy 脚本没有添加它:

job('TestingAnalysis') {

  triggers {
    cron('H 8 28 * *')
  }

  steps {
    shell('some jiberish to create error')
  }
  publishers {
    postBuildScripts {
        steps {
          shell('echo "fff"')
          shell('echo "FFDFDF"')
          }
        onlyIfBuildSucceeds(false)
        onlyIfBuildFails(true)
    }
    retryBuild {
        rerunIfUnstable()
        retryLimit(3)
        fixedDelay(600)
    }
  }
}

一切正常,除了:

    postBuildScripts {
        steps {
          shell('echo "fff"')
          shell('echo "FFDFDF"')
          }
        onlyIfBuildSucceeds(false)
        onlyIfBuildFails(true)
    }

这是我的结果:

我试了postBuildSteps,也报错了。

我也尝试了错误:

    postBuildScripts {
        steps {
          sh' echo "ggg" '
          }
        onlyIfBuildSucceeds(false)
        onlyIfBuildFails(true)
    }

【问题讨论】:

  • 我刚刚测试了它,它工作正常,你使用的是哪个版本的PostBuildScript插件?
  • 我用的是3.0.0版

标签: jenkins groovy publisher post-build


【解决方案1】:

看看JENKINS-66189 似乎PostBuildScript 的3.0 版存在问题,其中不再支持旧语法(您正在使用的)。为了在 Job Dsl 脚本中使用新版本,您需要使用 Dynamic DSL syntax

在您自己的 Jenkins 实例中使用以下链接查看正确用法:
YOUR_JENKINS_URL/plugin/job-dsl/api-viewer/index.html#path/freeStyleJob-publishers-postBuildScript.
它将帮助您构建正确的命令。在您的情况下,它将是:

job('TestingAnalysis') {
    triggers {
        cron('H 8 28 * *')
    }
    steps {
        shell('some jiberish to create error')
    }
    publishers {
        postBuildScript {
            buildSteps {
                postBuildStep {
                    stopOnFailure(false) // Mandatory setting
                    results(['FAILURE']) // Replaces onlyIfBuildFails(true)
                    buildSteps {
                        shell {
                            command('echo "fff"')
                        }
                        shell {
                            command('echo "FFDFDF"')
                        }
                    }
                }
            }
            markBuildUnstable(false)  // Mandatory setting
        }
    }
}

请注意,您现在只需将相关构建结果列表传递给results 函数,而不是使用onlyIfBuildSucceedsonlyIfBuildFails 之类的函数。 (成功不稳定失败未构建中止

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    相关资源
    最近更新 更多