相关疑难解决方法(0)

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

我想在Jenkins中强制执行以下场景:

  1. 我有工作A和工作B.
  2. 我想在执行作业B时禁用作业A,并且在执行作业B之后,我想再次启用作业A.

要启用/禁用作业A,我使用了Groovy插件:Groovy插件

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

我在作业B的执行开始时添加了以下代码片段:

Jenkins.instance.getItem("job_A").disable()
Run Code Online (Sandbox Code Playgroud)

并在执行工作B后:

Jenkins.instance.getItem("job_A").enable()
Run Code Online (Sandbox Code Playgroud)

使用Execute Groovy脚本:

当我运行作业B时,它失败并出现以下异常:

Caught: groovy.lang.MissingPropertyException: No such property: Jenkins for class: hudson7198966217090520732
    at hudson7198966217090520732.run(hudson7198966217090520732.groovy:1)
Run Code Online (Sandbox Code Playgroud)

使用Execute系统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) …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-plugins

13
推荐指数
2
解决办法
3万
查看次数

如果新构建在管道中等待,如何强制Jenkins跳过下游作业?

我在Jenkins的构建管道分为三个部分:

  1. 构建代码
  2. 将代码部署到环境中
  3. 运行自动功能测试

我已经设置了它,以便可以发生并发构建,如果#2或#3当前正在为另一个构建运行,构建管道将阻止构建进入#2.

我希望能够做的是设置Jenkins以便在有多个构建等待时进行处理,并且#2和#3完成,因为只有LATEST构建才能进入#2和#3.

有没有办法开箱即用?如果您有"持续交付"一书,我正在尝试做的是实现p上的内容.118 - p.119

jenkins

12
推荐指数
1
解决办法
9169
查看次数

如何定期运行作业并且仅当它尚未在 Jenkins 上运行时

假设我有一个 Jenkins 作业,它每 5 分钟运行一次并且只需要运行 3 分钟,然后该作业突然变得需要超过 5 分钟(比如 8 分钟)。在这种情况下,作业队列变满,因为 Jenkins 阻止执行新添加的作业,直到已经运行的作业完成。

我可以允许队列中的作业并发执行,但我更喜欢如果最后一个作业仍在运行,则立即取消新添加的作业。这对詹金斯来说可能吗?还是我应该寻找更复杂的作业调度解决方案?

jenkins

2
推荐指数
1
解决办法
2924
查看次数

标签 统计

jenkins ×3

groovy ×1

jenkins-plugins ×1