groovy - 使用 Groovy 脚本插件从 Jenkins 运行 Groovy 命令

标签 groovy jenkins jenkins-plugins

我想在 Jenkins 强制以下场景:

  • 我有工作 A 和工作 B
  • 我想在执行作业 B 时禁用作业 A,在执行作业 B 后,我想再次启用作业 A。

  • 为了启用/禁用作业 A,我使用了 Groovy 插件:Groovy plugin

    Groovy 插件提供了两种可能性:执行 Groovy 脚本 执行系统 ​​Groovy 脚本 .

    我在作业 B 开始执行时添加了以下代码片段:
    Jenkins.instance.getItem("job_A").disable()
    

    并在执行作业 B 后:
    Jenkins.instance.getItem("job_A").enable()
    

    使用 执行 Groovy 脚本 :

    当我运行作业 B 时,它失败并出现以下异常:
    Caught: groovy.lang.MissingPropertyException: No such property: Jenkins for class: hudson7198966217090520732
        at hudson7198966217090520732.run(hudson7198966217090520732.groovy:1)
    

    使用 执行系统 ​​Groovy 脚本 :

    当我运行作业 B 时,它失败并出现以下异常:
    FATAL: No such property: Jenkins for class: Script1
    groovy.lang.MissingPropertyException: No such property: Jenkins for class: Script1
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
        at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231)
        at Script1.run(Script1.groovy:1)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:682)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:666)
        at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:80)
        at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
        at hudson.model.Build$BuildExecution.build(Build.java:199)
        at hudson.model.Build$BuildExecution.doRun(Build.java:160)
        at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:586)
        at hudson.model.Run.execute(Run.java:1576)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
        at hudson.model.ResourceController.execute(ResourceController.java:88)
        at hudson.model.Executor.run(Executor.java:241)
    

    知道可能是什么问题吗?
    此外,当从 Jenkins 脚本控制台运行此代码片段时,它可以正常工作。
    提前致谢。

    最佳答案

    对于 future 的读者,蒂姆上面的评论是解决方案:
    import jenkins.model.Jenkins

    关于groovy - 使用 Groovy 脚本插件从 Jenkins 运行 Groovy 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17429050/

    相关文章:

    groovy - 在 Play 1 框架中使用带有 groovy 模板的聚合物

    node.js - 如何更改 Jenkins 上的 Node.js 版本?

    git - 您可以手动设置 Jenkins currentBuild.changeSets 吗?

    ios - Fabric 缺少 DSYM,即使日志说它上传了它们

    java - 如何在 Jenkins 中使用 Java 变量

    git - Jenkins:git "Checking out Revision"后失败

    linux - Jenkins 异常

    groovy - 如何对递归函数进行基准测试?

    maven - 如何在一个地方为许多 gradle 项目声明依赖版本

    groovy - Groovy 中的惰性映射值