Jenkins 发布者 postBuildScripts 不起作用

标签 jenkins groovy publisher post-build

我有一个 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)
    }

这是我的结果: enter image description here

我尝试了 postBuildSteps 并且也遇到了错误。

我也尝试过,但出现错误:

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

最佳答案

看看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 等函数。 (成功不稳定失败NOT_BUILT中止)

关于Jenkins 发布者 postBuildScripts 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68551832/

相关文章:

azure - 从 Jenkins 触发 azure devops 管道

eclipse - 如何在 Eclipse 中使用 Groovy 开发 Maven 插件

syntax - 如何 Groovy-ify 空检查?

android - 更改名称后,Google Play上的旧发布商名称会如何处理

reactive-programming - Project Reactor 3 中的 publishOn 与 subscribeOn

java - 在 Jenkins 中运行 Windows Batch Commando 时出错,但在 CMD 中运行正常

json - 从 JSON 字符串查询 secret 值(密码)

ios - 为什么这会在 Combine 中产生编译器错误?

jenkins - 推送到特定目录时触发特定作业

android - gradle mustRunAfter 似乎不起作用